Software Engineer. Go, Linux, and open source software enthusiast. On and ever upward.
- Package vsock provides access to Linux VM sockets (AF_VSOCK) for communication between a hypervisor and its virtual machines. MIT Licensed.
- Provides detection and access to System Management BIOS (SMBIOS) and Desktop Management Interface (DMI) data and structures. MIT Licensed.
- Package block enables programmatic access to block devices. MIT Licensed.
- Package arp implements the ARP protocol, as described in RFC 826. MIT Licensed.
- Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags. MIT Licensed.
- Package dhcp6 implements a DHCPv6 server, as described in RFC 3315. MIT Licensed.
- Package untappd provides an Untappd APIv4 client, written in Go. MIT Licensed.
- Package ndp implements the Neighbor Discovery Protocol, as described in RFC 4861. MIT Licensed.
- Package genetlink implements generic netlink interactions and data types. MIT Licensed.
- Package netlink provides low-level access to Linux netlink sockets. MIT Licensed.
- Network Protocol Breakdown: NDP and Go
- An introduction to the IPv6 Neighbor Discovery protocol, and how to utilize it from Go.
- A programmer’s journey with RSI
- My experiences as a professional programmer dealing with RSI and cubital tunnel syndrome, and how I manage these issues.
- Accessing SMBIOS information with Go
- Accessing hardware information using the SMBIOS standard with Go.
- unsafe.Pointer and system calls
- Using Go’s unsafe.Pointer type to cast raw memory and work with system calls.
- Open Source at DigitalOcean: Introducing go-qemu and go-libvirt
- Controlling QEMU and libvirt programmatically using pure Go interfaces.
- Cthulhu: Organizing Go Code in a Scalable Repo
- Lessons learned while working with DigitalOcean’s monolithic Go code repository, cthulhu.
- Network Protocol Breakdown: Ethernet and Go
- An introduction to Ethernet frames, VLAN tags, and raw sockets, and how to leverage low-level networking primitives in Go.
- Linux VM sockets in Go
- Leveraging Linux VM sockets to enable bidirectional, many-to-one communication between a hypervisor and its VMs, using Go.
- Linux, Netlink, and Go — Part 3: packages netlink, genetlink, and wifi
- Using netlink, generic netlink, and nl80211 to manipulate WiFi network interfaces on Linux, using Go.
- Linux, Netlink, and Go — Part 2: generic netlink
- An introduction to generic netlink: an extensible netlink family. This post also describes how to leverage generic netlink in Go.