I offer programming, consulting, and architectural help for a large range of Linux systems programming issues. My specialties are HTTP, networking, scalability, performance, and kernel programming. I have experience working with both small and large companies and am happy to work out either per hour or per project compensation agreements. I always support my previous work.
I encourage you to look at my open source contributions in order to get a small preview of my work. I also do occasional writing on networking and systems programming in magazines and on my blog.
Contact me to get the conversation started.
Linux Device Driver Development
I have experience developing from scratch Linux PCI-X, PCI-e, and USB drivers for networks, video processing, data processing, and more. Developing a highly efficient interface for userspace is almost as important as driving the device itself.
Legacy System Support
Do you have a bug on 2.4.x? Maybe an older 2.6.x that is considered obsolete? Or even 2.2.x or a distribution that does not exist anymore? These legacy systems are widely deployed in production scenarios but the Open Source community cannot effectively support both these older systems and do new development at the same time. I have been working professionally with both the kernel and user space code since 1996 and can help with your problem.
Backporting Device Drivers
Sometimes business reasons demand running newer devices on older kernels or under legacy library environments - I can help.
Kernel Network Subsystem WorkI have contributed to the mainstream Linux TCP stack as well as engineered local modifications for performance, congestion control, and other value added functions. I wrote the first DCCP implementation, and have significant experience with Selective Acknowledgments plus all manner of other network performance issues.
Backporting Kernel FeaturesSometimes new kernel developments are needed in legacy environments. The unstable Linux kernel API policy can make this challenging - but I can help create a custom solution for you.
Advice on Engineering with Open SourceWhile I Am Not A Lawyer, I can provide engineering guidance on how to effectively build a solution which mixes proprietary and Open Source technologies. Legal advice is critical, but it often focuses on what not to do, rather than helping you build a solution. I give advice that lets you leverage (and contrbitute back to) Open Source and proprietary components while respecting everyone's legal rights and focusing on your core competency.
Customizing Network ApplicationsMaybe you just need a new feature or a bug fixed on a popular open source application? I've worked on many of them, including Firefox, Apache, BIND, Squid, and many others.
Customizing Embedded DistributionsCommon issues with embeddeddistributions involve boot time initialization speed, file systems,flash media, bootloaders, integrated upgrades, log management, andsecurity. I can customize this to your needs whether you are building aVM-ware image, a Live CD, or a full fledged hardware appliance.
Application Delivery ExpertiseI have implemented fully compliant HTTP/1.1 proxies, clients, and servers along with content adaptation systems. I am the author of the first verified HTTP/1.1 compliant HTTP proxy, and have participated in the standardization process for that and related protocols.
I have related expertise with content distribution, application delivery, and SOA artchitectures too.
Network ProtocolsI have architected and implemented dozens of common protocols and am aware of their scaling and interoperation issues. At the transport layer and below I have worked on DCCP, TCP, ARP, etc.. Application layer protocols include examples examples such as BGP. DNS, HTTP, NTP, SMTP, IMAP, and SIP. And even higher in the stack I have worked on SOAP stacks and their corresponding specifications such as WS-Addressing and WS-Reliable-Messaging. There are many other examples.
I have worked on the engineering staffs of both network ISPs and hardware gear manufacturers. I know what it takes to make a successful IP based application.
Server Performance AnalysisPerformance is a specialty. Performance can mean a lot of different things:
If you are faced with an existing application that has reached a bottleneck, I can also build and implement plans for scaling that out. Analyzing a deployed application without disturbing it is an art gained over many different experiences.