If you're looking for code, there's more over on GitLab. I am currently focused on
Zambezi,
which is an SMB3 Offload Engine for SmartNICs.
I started using
GitLab a few years ago. It's not as flashy as
GitHub, but I learned a few
tricks and got used to it. Moving back and forth between the two is 90%
easy and 10% annoying corner cases that trip me up.
Samba Team Member
I write code and share knowledge about Windows core network protocols,
particularly Server Message Block (SMB).
- Implementing CIFS
Several years ago, I wrote a book about CIFS (aka SMB1). Since then, Microsoft has deprecated SMB1, but the book is still relevant and I, for one, still use it as a reference. - [MS-CIFS] and [MS-SMB]
Fewer years back, based on the strength of my CIFS book, I was asked to put together a team to write the SMB1 specifications for Microsoft. We wrote [MS-CIFS] from scratch and overhauled [MS-SMB]. The latter volume represents the additions and changes made to SMB1 starting with Windows 2000. Once again, SMB1 has been rightly deprecated by Microsoft, but it's still in use in a lot of environments so it's really important to have a solid reference. - SMB3 Offload Engine for SmartNICs and DPUs
These days I'm working on SMB2/3 integration with distributed file systems, and on an SMB3 Offload Engine. I think it would be cool if low-level encryption, compression, and basic message handling could be moved to a SmartNIC or similar device.
โฃ Compression and Encryption
โฃ Multichannel and Multi-protocol
โฃ Packet marshalling/unmarshalling
โฃ Proxy and Software-Defined Servers - I started fiddling with PeerDist a while back, but have not spent time on it in...well...years. I plan to get back to it. Eventually.
- ubiqx Modules
A small collection of fairly common data structures that you may have implemented in an undergraduate CS class. I wrote these long ago. I reuse them rather than rewriting them over and over again.
- The Home Network
The network was once split between business and home. There were two Soekris routers (remember those?) running OpenBSD's Packet Filter (pf(4)
), with routing in between. It was a great setup, and I ran things that way for years. More recently, I've combined down to a single network. I run OpnSense on a Protectli Vault. OpnSense is easier to manage day-to-day, but I miss hand-crafting the config files. I'm still able to fine tune my firewall to meet my own picky specifications and preferences, but now it's done through a GUI and it feels somewhat disconnected. - Firewall Futures
- I used to have uplinks to two disreputable behemoth ISP services. That's down to one, now. Two would permit load balancing and failover, which I would like to try.
- I want to collect data at the firewalls, and coordinate with (anonymized) data from other firewalls to look for patterns. You know, Big Data/AI analysis stuff.
- I probably want to set up a distributed VPN to handle the load balancing. Thing is...I really like to get into the guts of the systems I use, and that means spending a lot more time and energy than would be required to buy into a VPN service.
- File Servers
I had a pair of Linux MD RAID based Samba fileservers that I ran in my basement. They both aged out, and went to electronics recycling. I've replaced them with a single small desktop system connected to an external disk array. It's running Rocky 9, and it works like a charm. The PC I'm using has plenty of unused horsepower to run containers.
- SMB3 NAS Offload Engine
Top Project: Zambezi
The goal is to develop and standardize a sensible interface between the SMB3 Syntactic and Semantic layers, making it possible to offload the Syntactic part of the stack to a SmartNIC or DPU. The interface layer may also have relevance in direct memory-to-memory data transfer systems such as SDXI.
- SMB3 Python Toolkit
Carnaval is an SMB2/3 toolkit in Python, aimed at building test cases and simple tools quickly and easily. It also provides support for NBT transport. Carnaval is written in Python 2, not Py3. The project has languished a bit over the years, but as Zambezi progresses the need for such a toolkit only increases.
- Secure Overlay Network
Back when I designed networks for the University of Minnesota, I became enamored of Resilient Overlay Networks. If you mix in some VPN capabilities, erasure codes, and clever routing algorithms, you might have something really cool--particularly in these work-from-home times. There are certainly extant examples, like tinc, which supports mesh networking. I'm looking into tinc, and others, to see what fits best. OpnSense supports tinc, so perhaps the job is done, but I feel the need to dig into the code a bit.
- Wide Area Distributed Key/Value store Key/Value stores are generally built for performance. I'm interested in what happens when that model is extended over a wide area network, particularly a resilient mesh, as described above. I think we'd need to add in some redundancy and possibly some form of journaling so that fenced nodes can recover cleanly.
- PeerDist
This one keeps coming up time and again, and it's entangled with so much
else...
PeerDist is the protocol suite at the core of BranchCache, which is a distributed caching system that Microsoft uses for web content, SMB3 files, and for software updates (see BITS). I have created test code for working with PeerDist and BITS. The next step would be polish up the PeerDist code, add PeerDistv2 support, and write the code for an Open Source Hosted Cache. PeerDist combines all sorts of cool stuff, like Protocols, Data Storage, Key/Value Lookup, and Distributed Computing.
There's the normal stuff I do, including shell scripting and C coding and such-like, and then there are the bright shiny things that catch my attention. I just wish I had time to play with them.
- Ultibo
...is a modified Free Pascal compiler that targets the Raspberry Pi. It includes an extensive set of libraries, and the output does not require an underlying OS. Cool, weird, fun, and intriguing.
Years ago, Object Oriented Pascal was my favorite programming language, and I was very happy when I stumbled across the Free Pascal compiler. Unfortunately, I have had neither the time nor the driving reason to get back into it. Perhaps this is the excuse I need. - Crystal
I like object oriented programming languages, but I've been disappointed by some of the more popular ones out there. I'd like to give this one a test drive.
I have been kicked hard in the bike shorts by proprietary cycling computers.
The ones I have tried are closed-source and have no published API. When
things go wrong, there is no recourse. This is the Achilles' heel of these
expensive devices. All of the problems I've had with them, including data
loss and other frustrations, are due to their closed, proprietary nature.
So I am looking for an open option. Here's what I've found so far:
- Open Cycling Computer
The project was quite far along, but appears to have fallen stagnant. Dang shame, given how much work went into it. Perhaps it can be revived and updated, given a little time and attention. - Open Bicycle Computer
Another project that has seemingly dried up. Worth reviewing, though. - Open Source Bike GPS
A much more active Open Bike Computer project. There are links in the ReadMe to hardware information. This one looks quite promising. - Pyloton
...is much less ambitious than the other projects on the list, but I could learn a thing or two from the parts and pieces list alone. - Karoo-API
The folks at Hammerhead, who put out the Karoo bike computer, have started creating toolkits. It appears to be very new code, much of it forked from other projects (which is fine). I need to watch and consider getting involved. - Golden Cheetah
Ride file analytics. This would pair nicely with an open GPS device.
There isn't much time, given everything listed above, but it would be fun to
do a bit more learning.
- Android Development
You know... apps and such.
A long time ago I co-founded a project called jCIFS to create a Java client for SMB1. It wound up in a lot of places, from supercomputers to home media players, but was particularly useful as an SMB1 engine for Android Apps. Sadly, we all got distracted by other projects and never added SMB2/3 support to jCIFS (but see: jcifs-ng). - A bit more about Docker
I've done more than dabble, but I am really just an end-user. The Windows Protocol Test Suites (WPTS) can be run from inside a Docker Linux image, so I guess it's a good time to get practical experience. - Kubernetes, Ansible, Terraform... yeah, I need to fly in the cloud some more.
โ I enjoy a decent cup o'tea.
๐คบ For much of my life I was an active fencer. (Foil:C, รpรฉe:D)
๐ด These days I prefer to ride a bicycle.
You can find
me on LinkedIn.
You can find
more stuff on GitLab.
$Id: README.md; 2024-08-01 14:58:22 -0500; crh$