me code good someday

Hello. My name is Dylan McNamee.

I care about about Science, Math and Engineering education ...

It's been great to see enrollments and popularity bounce back from their lows in the mid-to-late 2000's. My hope is that people pursue careers in these areas out of a sense of wonder and enthusiasm -- and not because "that's where the money is."

Encouraging equity, diversity and inclusion in STEM is important to me. Three of my sources of inspiration (on that front and beyond) are Claire Evans, Vi Hart and Emily Graslie. Of course, there are less visible heroes being role models and leaders just doing their thing all over. Yay!

Things I've done towards this: in Winter 2008 I organized a math circle in my daughter's school. In 2010 I volunteered to help OMSI reach out in this area. The project I helped with became Design Zone. In 2011 I started a "math club" after school on Fridays. Other parents and I help the students use the Khan Academy, MIT's Scratch, play math-y board games and other activities (like Modular Origami and Hexaflexagons) - it is well-received, and amazingly well attended. Since 2018 I've been on the Board of the Saturday Academy - an Equity and Inclusion-focused, hands-on STEM learning organization. I co-taught a Lego robotics course with them back in 1998, and have been impressed by their work ever since. It's a privilege to be able to help them.

After retiring from Galois, Inc. in mid 2016, I wrote a CC-licensed Book about Cryptography, Math and Programming targeted at 9th - 12th graders. More recently, in 2020-2021, I helped Galois develop some training materials for their SAW software verification tools.

Starting in Spring 2022, and before that from 2017-2019 I am a visiting professor of computer science at Reed College. I truly enjoy learning and teaching amongst an amazing community.

Inspired by my return to teaching, my next project is to develop a CS 200-level curriculum that uses the Rust programming language. I think systems programming languages (like C & C++) are a great way to begin to understand how computers work under the hood, and are the right tool for implementing many critical systems. However, in the 21st century, I think Rust is a much safer tool to build critical systems. Figuring out how to bridge the gap between CS 100-level Python expertise and Rust is my current challenge. That class traditionally goes from logic design, through basic CPU architecture and implementation, then on to systems programming. For the CPU design part of the curriculum I'm excited to experiment with implementing RISC-V on an FPGA.

My blog is where I'm recording works in progress, and is updated more often than this website.

The environment

As part of our efforts to help slow climate change, my family has two electric vehicles - one for jaunts around town and another for long-distance trips. We also pay our utility an extra amount to prioritize renewables (which in Portland is hydro and wind power). We're being more intentional about air travel (by making sure our carrier buys offsets, for example). Probably most impactfully we have continued to reduce and be mindful of our meat consumption.

I am sympathetic with the author of this blog post, "Promise of change without changing at all: The electric car as a talisman of false hope" - just changing what kind of vehicle we commute in is not sufficient to affect climate change. However, not doing at least that is giving up. For our part, my family rides bikes for most of our daily business. We have also reduced our meat consumption significantly. I'm not advocating everyone do the same, but it's made a lot of sense to us. I do advocate that everyone be intentional about their choices. It's becoming increasingly clear that collective action is going to be key to getting us out of the mess we're in.

I Think Video Games Are Important

Way back in October, 2004, I gave the keynote talk to the Consortium for Computing Sciences in Colleges titled Using Video Games to Motivate Computer Science Here are the slides from that talk.

Demos I gave:

Here's a link to balldroppings

Here's a link to Bridge Construction Set

I Enjoy Programming

I'm currently head-over-heels in love with Rust. It's the systems programming language I always wished I had. Manual memory management with compiler-checked safety is a revelation. The Rust community is also really helpful and welcoming. I also want to learn Kotlin, and rewrite Cheap Impostor (see below) in Swift.

Cheap Impostor

I wrote Cheap Impostor because I wanted to make booklets, books, and magazines out of PDF files I created myself, as well as from web pages and downloaded manuals, etc. I learned that "imposition" is a prepress process that consists of reordering pages and n-upping them so that larger sheets of paper can be sliced and folded and turned into books or magazines. Cheap impostor does a simpler version of this, just 2-up, but it does do either books or magazines. I decided to release it shareware, and the response has been very gratifying.

Software toys

I love software toys, early examples were Pinball Construction Set and the original SimCity. Kapwing is a simple pure-java toy I wrote, inspired by balldroppings, but more controllable. Right-click on a paddle to control which MIDI note and channel a ball collision causes. I haven't touched it in a long time. I apologize for the fullscreen-only interface. On macOS, it used to make sounds by default, but now you have to right-click on a paddle and change the MIDI device.

Things I think are cool

I'm in constant wonder about how amazingly powerful todays computers are. Every time I pick up my laptop I feel the power of an entire recording studio (including every synthesizer ever made), an entire arcade from 1984 plus games that would be unimaginable back then, a supercomputer capable of simulating complex systems, and a workstation with every development tool and language I've ever dreamed of (plus many I'm not imaginative enough for yet). It's daunting and thrilling at the same time.

The spirit of creative mayhem in Phrack and 2600 magazines lives on in the wonderful new PoC||GTFO online magazine. At least one issue is both a bootable Operating System and a readable PDF file. I love that each article both shows you something amazing (like an MBR/PDF polyglot), and then teaches you how to do it yourself.

I love coffee. Heidi and I have been on a coffee journey for the last 30 or so years. We were at ground zero of the second wave in Seattle in the late 80's / early 90's, then at the center of the third wave in Portland in the late 90's / early 00's. One eye-opener for me is that you can make fantastic espresso from either light- or dark- roast (or anything in between) as long as you adjust your recipe (grind, brew temperature, shot duration and dose) accordingly. I had some thoughts about some research about grind and dose.

Work to eat, eat to live, live to bike, bike to work

I like to ride bicycles. I love my custom Vertigo cross bike. I think Portland, Oregon is a wonderful place to live (but I fear many of its recent immigrants don't love it for the same reasons* I do).

oh, I have a lot of hobbies and I'm amazed by Audra's amazing art and observation skills.

More personal stuff


* an example is folks who come here from over-developed regions, see huge "opportunities" for development, and lobby to change our hugely successful urban growth boundary