Consulting

I’m based in Toronto, Ontario (Canada) and I’m here to help you.

Top Reasons to Hire Me

  • I understand business. I have started two companies, and I understand the need to deliver something of value.
  • I have extensive technical expertise and experience.
  • I enjoy mentoring developers, and hope to leave your development team with new insights or skills.
  • I do things right the first time. I take pride in everything I do, which means I will do my best for your project too.
  • I am very direct. If I see a problem that can be fixed in five minutes, I will tell you. If I sense that your project is unrealistic, or that you don’t actually need my skills, I will be honest with you.
  • I love hard problems. The harder the better. But be prepared, that hard problems often require significant time and effort to accomplish, and multiple iterations will be required before a good solution emerges.

Areas of Expertise

  • C++ Software Design.  I know how to design software for performance, and C++ is my preferred tool.
  • GPU Acceleration.  Do you think that a GPU can speed up your program?  I can certainly help you find out.  If you have an existing GPU program, I might be able to help you tune it for even more performance.
  • OpenCL.  I know OpenCL inside and out, and I can certainly help you leverage OpenCL in existing or new applications.  I’m a Khronos member and help develop the OpenCL standard.
  • Software Tuning.  Do you need help figuring out where your program is spending its time?  Do you want some suggestions on improving performance?  I can help.
  • Algorithm Tuning.  Is your algorithm your bottleneck?  Does your application have a performance-critical algorithm that you need help with?   Ask me for help.  I can also help design wait-free algorithms for your problem.
  • Training.  Do you want me to prepare a workshop for your organization so that I can teach you how to do this work yourself?  I offer interactive training.