I've been writing software professionally for over 15 years on PCs, embedded systems and Android devices. I have the C, C++, Java and Multi-Threading skills that you need and the engineering know how to get your job done fast and efficiently. My object oriented design skills will ensure your product is easy to maintain throughout its lifetime.
As a trusted partner of small and midsize technology companies, my work has supported some of the most innovative products developed in recent years. Do not hesitate to contact me if your project can use a knowledgeable, self starting, professional engineer.
In this example I was able to stabilize the video through feature detection/tracking. Features are tracked from frame to frame and the video is stabilized through geometric transformation.
In the video, the left side shows the raw video and the stabilized video is shown on the right. This algorithm is efficient enough to run in real-time
Applications now have the ability to have their computations spread across multiple computing cores in the system or in the cloud. Welcome to the Jungle of concurrent computing!
Through concurrent design, an offline machine vision application was sped up by 7x through the use of asynchronous tasks and futures.
Even though the free lunch has been over since 2005, many programmers still write code that only execute in a single path of execution. Modern day processors have multiple cores and each core supports one or more threads of execution. Let's put them to use. Let's go fast!
Depending on your problem, I can speed up the execution of your algorithms through asynchronous tasks and futures or through parallel threading. With the release of C++11, these concepts have been included in the C++ standard and that makes writing portable concurrent code that much easier. Not to worry though, if C++11 isn't available at your organization, both Qt and the boost libraries offer concurrent implementations.
Critical regions of code are protected with Mutexes so that multiple threads are denied simultaneous access to those regions. A Lock wraps a Mutex, which ties the unlocking of a Mutex to the lifecycle of a Lock.
I can get your great idea off the ground and help you monetize your applications through in-app purchases and ad revenue.
I used JBox2D to control the "flingable" items in the Kids Counting Book Game.
AndEngine is one of the most popular and powerful Open Source Android 2D OpenGL Game Engines.
Computing methods and concepts that are implemented and inter-operate on multiple computer platforms.
Is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt is classified as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers.
I've bee a Qt fanatic since version 3 and can help you develop your cross platform application rapidly. In the near future, Qt will be available for Android and iOS devices as well!
Through my background in Electrical Engineering, I have a very strong grasp on higher level mathematics and physics.
MATLAB (matrix laboratory) is a numerical computing environment and fourth-generation programming language. Developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, Java, and Fortran.
I typically use Matlab to get my lens surface equations, machine vision algorithms, or any other mathematical models correct before I port them to the required platform.
I've been a power of user of Matlab for the past 10 years.
You can call your own C, C++, or Fortran subroutines from the MATLAB command line as if they were built-in functions. These programs, called binary MEX-files, are dynamically-linked subroutines that the MATLAB interpreter loads and executes. MEX stands for "MATLAB executable."
I've written MEX functions to capture images from cameras, to call OpenCV methods and to communicate with other applications.
Tools like the Google Web Toolkit (GWT) have made web development efficient again. GWT is a development toolkit for building and optimizing complex browser-based applications. It's open source, completely free and used by thousands of developers around the world.
I used GWT to create GetThatSubJob.com - It's a web service that sends out job notifications whenever a substitute job becomes available in a SubFinder District. GetThatSubJob is deployed in the cloud on Google's AppEngine - which enables you to build web applications on the same scalable systems that power Google applications.
A NoSQL database provides a mechanism for storage and retrieval of data that use looser consistency models than traditional relational databases.
I used CouchDB as the backend for a web application that monitored temperature in a laboratory.
LAMP is a combination of free, open source software and the acronym refers to the first letters of Linux (operating system), Apache HTTP Server, MySQL (database software), and PHP, Perl or Python, principal components to build a viable general purpose web server.
I spent 5 years of my life developing and refining the process to diamond mill molds for wafer level optics at OmniVision Technologies (US Patent Application US20100165134 A1). The result of my hard work (and many, many others) is the completely functioning camera shown on the left.
I can help you meet your surface roughness and lens form tolerances through custom NC programming of your optics - for both rotationally symmetric and freeform optics. I can help you diamond mill or diamond turn freeform optics.
I have programmed optics for Moore NanoTech's UPL, FG and UPM tools.
I have extensive experience calibrating linear stages and air bearing spindles of precision machine tools via LASER calibration. Ask me how I can help tighten your tolerances on your precision machine tool.