Contract Engineering Services

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.

I will be an invaluable addition to your team.

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.

Technologies that I work well with.

C++, Java, Matlab , Qt, Google Web Toolkit, PHP, JavaScript, Intel Performance Primitives, Multithreading, Concurrency, OpenCV, Google Analytics, Microsoft Visual Studio, Eclipse, Arduino, Eagle.

Scroll down or click on these topics to see examples of my work and skills - Android, Cross Platform, Machine Vision, Multithreading, Optics, Scientific, Web



Machine Vision

Video Stabilization

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.

Multithreading

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!

Concurrency

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.

Locking

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.

Android

I can get your great idea off the ground and help you monetize your applications through in-app purchases and ad revenue.

Money Making Apps

I've architected, designed and deployed real Android based applications that are making money on Google Play, Barnes & Noble's Nook, at the Amazon App Store and on the Nabi Kids Tablet.

JBox2D

Need to add realistic physics to your Android application? JBox2D is an open source Java engine for simulating rigid bodies in 2D. This is based on the C++ version Box2D.

I used JBox2D to control the "flingable" items in the Kids Counting Book Game.

AndEngine

AndEngine is one of the most popular and powerful Open Source Android 2D OpenGL Game Engines.

Cross Platform

Computing methods and concepts that are implemented and inter-operate on multiple computer platforms.

Qt

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!

libGDX

Libgdx is a Java game development framework that provides a unified API that works across all supported platforms. The framework provides an environment for rapid prototyping and fast iterations. Instead of deploying to Android/iOS/Javascript after each code change, you can run and debug your game on the desktop, natively. Desktop JVM features like code hotswapping reduce your iteration times considerably.

Scientific Tools

Through my background in Electrical Engineering, I have a very strong grasp on higher level mathematics and physics.

Matlab

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.

MEX Functions

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.

Web 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.

NoSQL

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

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.

Diamond Turned / Milled Optics

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.

Custom NC Generation

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.

Machine Calibration

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.

Ready To Talk?

If you think that I'm the right fit for your project, please feel free to get in touch with me so that we can discuss your needs in detail.

Looking forward to our conversation,

Goran Rauker

goranr@someonejust.com
970-744-3070
Longmont, Colorado, USA

View Goran Rauker's profile on LinkedIn