Notes from StorageCraft


In a fit of reflection, I have tabulated what I have learned (or at least briefly been acquainted with) while working at StorageCraft.

  • Roles:
    • Engineer
      • Linux kernel device driver
      • New product development (SPX, Jarvis)
      • Legacy codebase maintenance
      • Supporting PM, support, QA, IT, …
    • Design
      • Linux snapshot driver state machine
      • SPX Licensing
      • Jarvis
    • Architect / Architecture board / Architect Review Board
      • Managing the inter-team terminology is key – including RPC!
    • Patent Review Board
    • Mentor:
      • of a then-junior kernel developer
      • of a Linux device driver maintainer
      • of a core C++ developer
    • Competitive analysis
  • Linux kernel module

    • copy-on-write implementation
    • developed regression test suite
    • DKMS
    • gdb kernel debugging
    • Linux kernel static analysis tools
    • researched feasibility of binary blob in kernel module
    • weak modules: RedHat has best support
  • Patents

    • Generated several patent ideas
    • Worked with attorney to submit patent to USPTO
    • Participated on patent review board
  • Linux technologies

  • Licensing

    • secret hiding / obfuscation
    • VM detection
    • Encryption libraries
      • gcrypt
        • Rebased StorageCraft’s licensing on gcrypt
        • ASN1 grammar libtasn1
      • CryptoPP
      • OpenSSL
      • WinCrypt
    • RSA encryption
    • certificates
      • CA testing scripts
    • SMBIOS
  • Security

    • MitM attacks
    • key files
    • bcrypt
    • At-rest encryption
      • dmcrypt
      • per-image
    • In-flight encryption
      • gRPC / SSL
  • Executable format parsing

    • ELF
    • COFF
  • RBD / Ceph

  • Scaling

    • glibc arenas easily OOM large multicore machines: MALLOC_ARENA_MAX
    • micro-services via gRPC
  • Exablox integration

  • Filesystems

    • Manual parsing
      • xfs
        • self-describing structures
      • ext
        • 64-bit
      • FAT
    • ReFS
    • Analysis
      • UFS
      • ZFS
      • btrfs
  • Virtual disk formats

    • VHD
    • VHDX
    • QCOW
    • VMDK
    • SPF
      • incrementals vs decrementals
  • Virtualization technologies

    • KVM
      • qcow disk plugins
      • virsh
    • vSphere
      • VDDK
    • HyperV
    • Xen
    • OpenStack
  • Algorithms

    • deduplication
      • static vs variable block sizes
        • rolling hash
      • PDOS paper…
    • copy-on-write
      • consider throttling carefully!
    • consensus algorithms
      • RAFT vs Paxos
  • Tooling

    • git
    • Atlassian
    • cmake
    • clang
    • buildroot
    • in-house toolchains
    • svn
  • Microsoft snapshot technologies

    • Microsoft VSS
      • volsnap
      • providers
    • Drivers
      • sc query foo
      • sc delete foo
    • Installers
      • WIX
  • Partitioning schemes

    • MBR
    • GPT
    • LVM
  • UTF8-ing legacy codebase

  • Aggressive testing

    • checking freespace bitmap against known-good oracle
    • “guerilla testing”: Perform randomized backup types, randomized failures, etc, with end-to-end verification
      • Ignore google; I coined this term years ago
    • libfiu
    • Extended Valgrind
      • Supported custom kernel driver’s ioctls
  • Maintenance

    • Update legacy file format (storing petabytes of customer data)
    • Migrate legacy codebase to Linux
    • Seamlessly migrate ShadowProtect licenses to SPX
    • Improve error reporting to cut support cases
  • Training

    • Modern C++
    • 2-day on-prem Scrum training
  • Modern C++

    • Migrating legacy C codebase
    • gsl
    • boost
      • icl
      • asio
  • gRPC / protobuf

  • Python ctypes bindings

  • STUN

  • discovery

  • Statistics

    • R
  • Performance

    • perf

May 2, 2017
441 words


Categories

Tags

Contact

email

ccoffing on GitHub

ccoffing on LinkedIn