About Me

Do not waste a minute— not a second— in trying to demonstrate to others the merits of your performance. If your work does not vindicate itself, you cannot vindicate it. Thomas W. Higginson

What I do

Not really sure what to say here, other than I am a technologist of sorts. What I mean is that I do take a great deal of pleasure in creating the "next" new thing. But I also love creating the company and having the vision for it as well. To me, I get annoyed by technology that has no home. I never understood and hope I never do. Over the years I have started and sold four high-tech companies. Now, I'm working on my 6th one, Cachengo (pronounced Cache-n-go).

What I've done

I've done quite a bit over the years. I started off in the storage industry when I was just a teenager. I learned from my father how to design boards and to troubleshoot all sorts of electronics. It's one of the curses of growing up in the industry and learning from a dad who was a jack of all trades. Over the years I've had to design my own controller boards, do my own mechanical work and then write my own software. Believe it or not, I had my first electronics company when I was in the 4th grade. Feel free to ask me more about this if you’d like. After high school, I entered the Navy's Nuclear Power program where I learned a lot about fluid dynamics, electrical theory as well as a lot of useful information on material science and chemistry. I am the first and only Nuke to complete both Machinists and Electronics Tech schools. While I was on active duty, I was awarded a scholarship to attend any school in the nation. It was a great deal, but I only had 30 days to get accepted or I'd lose the scholarship. Turns out Jacksonville University got a listing of the scholarship recipients and sought me out. I decided to study Math and Physics there and had the benefit of studying under one of the top professors in the field of Optics. After graduating from JU and leaving the Navy, I secured my first job as a full-time mechanical engineer. Despite the fact I had never taken a CAD course, I was a quick study. I had 6 months to complete my first tooling design for a company called MiniStor Peripherals. I completed the tooling design for a 1.8" hard drive in less than 45 days. And because I was dealing with vertical heights that were very small, I had to use some of the metallurgy I learned in the Navy to deal with the thinness of materials and the need for good elasticity and hardness. I then used this design to produce a scalable tooling that could span from 1.8" to 5.25" media. I guess you could say I was done for a while. I came up with methods for dealing with hysteresis when Magneto Resistive heads were introduced by IBM and I even had to deal with the nuances introduced by Maxtor's counter rotating designs. After my time designing hard drive test equipment, I turned my hand to RAID (redundant array of independent disks), where I helped usher in the use of external RAID controllers for building large clustered systems. I also helped to pioneer the world of Storage Management software and eventually introduced concepts of distributed object models, precursors to today’s CIMOM (common information model object manager). At Sullego, I wanted to do something I hadn’t done before. Things began with me working on yet another converged block & file server. And while I was getting better performance than I had gotten at my previous companies, I wasn’t happy with the end results. I couldn’t understand where performance was going. If a typical SATA drive was good for approximately 80MB/s of data transfer, why was it that arraying 4 drives together was only yielding 40 to 50MB/s in most storage boxes using RAID5 for the data protection. Seeing that RAID5 uses an n-1 parity scheme, it appeared that these systems were only allowing around 13 to 17 MB/s per drive. We were losing around 60MB/s per drive to handle the read-modify-write (RMF) associated with parity generation. I looked at various options for increasing the overall system performance, such as using faster disk drives, using various types of DRAM/NVRAM caches and even using Solid State Disks (SSDs). But all of these would add significant costs to the overall system, which was bad for the customer. Rather than doing like others, I looked to solve the efficiency problem without adding more costs to the system. My assumption was that the disks, CPU and memory were not the problems. I needed to alleviate the overhead of RMF. So I replaced the RAID5 configuration with a simple striping one. On my test system, this allowed me to get up to 1,000MB/s across a 16 drive system. That showed me significant promise. However, when I played with the configuration further and increased the size of my file-system, I noticed that my performance had dropped to around 450MB/s. What could have caused the drop off? This got me looking at how I was creating my volumes and how disk drives worked. If you think about a rotating disk, writing data to a point at the outer tracks of a disk versus the inner tracks yields considerable performance differences. Despite the fact that the disk platter travels at a constant 7,200 revolutions per minute, a point at the outer tracks covers more distance in one revolution than a point at the inner tracks. This is known as linear velocity and it was the culprit in my performance drop off. So, with numerous experiments behind me and conclusions starting to form in my head, I devised a system that could make use of the higher linear velocity of these outer tracks for reading and writing and the slower, inner tracks for persisting data. Essentially, I used the disk drives to act as a cache for themselves. The end result is I’ve produced the fastest file servers in the industry, but by using ultra low-cost components-- in other words, the fastest, cheapest file servers. At my first full-fledged startup, NetAttach, I pioneered the world's first storage system using Linux and open-source. I've done several since then, but this was the one that started things for the industry. Since then, I have helped many of the top companies in the world develop their own network storage products.

My Skills

I have a variety of software and hardware skills. While I am a bit rusty these days, I still do PCB layouts, 2D/3D mechanical modeling and I'm sure I can also do other hardware related tasks. On the software side of things, I am well-versed in the following items: System Level
  1. Linux kernel programming
  2. Linux
  3. Windows
  4. OS X
  5. Solaris
  6. xBSD
  7. MySQL
  8. SQLite
  9. Apache
  10. Xen
  11. VMware
  12. KVM
  13. Bacula
Programming Languages
  1. C
  2. C++
  3. C#
  4. Bash
  5. Python
  6. Perl
  7. PHP
  8. Ruby
  9. Ajax
  10. HTML
  11. CSS
  12. XML
  13. Java
  14. Javascript
Frameworks
  1. Wordpress
  2. Joomla
  3. .NET
  4. J2EE
  5. Zope
  6. CIMOM
  7. Rails
  8. Drupal
  9. Libvirt
Protocols, File-Systems, Misc.
  1. SSH
  2. SOAP
  3. iSCSI
  4. PVFS2
  5. CIFS
  6. NFS
  7. TCP/IP
  8. XML-RPC
  9. RAID
  10. XFS
  11. ext3
  12. ext4
  13. ext3COW
  14. reiserFS
  15. Fuse
  16. ZFS
  17. LVM
  18. EVMS
  19. Linux-HA
  20. DRBD
If you haven't figured it out, I pretty much touch everything from kernel to middleware to GUIs. I work with a lot of different areas and a lot of different programming languages. If there's something you don't see here, it's probably just an oversight. And bear in mind that I’m not writing code in all of these languages at the same time. Depending on what I’m working on at the time, that’s the language I use. I’m constantly switching from one to another. Therefore, I do rely heavily on references and prior code to remind me of how to do things. Typically, I do what I refer to as rapid-prototyping. When it comes to prototyping new Linux-based appliances, I'm not sure if there is someone faster. I've just been doing it for a long time and probably more times than anyone I've come across. If you're doing a Linux-based appliance, you should probably shoot a note over to me. I'm always happy to help people with those things that are near and dear to my heart. Apart from development, I also do an incredible amount of logistics work for people. Whether it's designing products and then sourcing components or figuring out how to automate build and test, I'm rather versatile and tend to put of these things in place for my clients. Additionally, I am typically asked to begin with high-level documents such as architectural and functional specifications, right on down to marketing documents such as MRDs, business plans and launch plans.

What I enjoy

I enjoy biking. I really do. Please don't ask what my favorite is, because I couldn't answer it. Sometimes I simply love riding my road bike and don't do much else. And now that it's cooling off, I'm really craving my mountain bike. I suppose it all depends. But I do enjoy other things as well. I love spending time with my three kids, Calista, Brendan and Haley. And I love my time with my wife, Emily. I rather despise being away from her, which is a necessary evil since I have to travel extensively around the world.

My beliefs

For those interested, I am Christian and hold to Calvinistic doctrine. But I also believe in personal evangelism. I don't believe it's the church's responsibility to evangelize the lost, but I do believe they are responsible for edifying and equipping the saints to do so. I try to be kind to everyone I come across and I try to never retaliate against attacks. I wish I could say that I never get upset at them too. But I can't. Most of the time, I'm okay. But there are occasions where I really want to say something harsh. Usually this is the result of things that involve friends or family. But I've also been known to get involved when I simply see someone getting picked on or who is in dire need of help. You see, we often will talk about being kind to others and about helping those who cannot help themselves. But how often do we do this? Is every homeless guy on the street a bum who is only going to buy himself a bottle of booze with your donation? When do we actually live according to the faith we claim to cling to?