Jacob Lifshay, Developer in Stanfield, OR, United States
Jacob is available for hire
Hire Jacob

Jacob Lifshay

Verified Expert  in Engineering

Digital Electronics Developer

Location
Stanfield, OR, United States
Toptal Member Since
September 29, 2015

Jacob is a C/C++ programmer with more than 10 years of experience programming on Linux and Windows. He has designed and implemented several complex projects on both desktop and embedded platforms. Jacob commits fully to each challenge he takes on, always striving to understand concepts at the most fundamental level in order to optimize performance.

Portfolio

Google Summer of Code
CMake, LLVM, JSON, Rendering, Vulkan, C++
Derive Performance, LLC
Embedded Systems, WebSockets, HTML5, JavaScript, Protobuf, C++, C
Prey, Inc.
C++, Win32

Experience

Availability

Part-time

Preferred Environment

Eclipse, Ubuntu Linux, KDevelop, Git

The most amazing...

...project I've coded is a Minecraft clone, written in C++11, with support for Redstone mechanics.

Work Experience

Participant

2017 - 2017
Google Summer of Code
  • Creating a software rendered implementation of the Vulkan API that uses LLVM for the compiler back-end.
  • Gained experience working with the Linux open-source graphics community.
  • Gained experience using LLVM's C API.
  • Wrote a CMake-based build system.
  • Wrote a SPIR-V parser.
Technologies: CMake, LLVM, JSON, Rendering, Vulkan, C++

Firmware Engineer Intern

2015 - 2016
Derive Performance, LLC
  • Debugged embedded software written in C.
  • Wrote a JavaScript interpreter for emulating an engine computer.
  • Wrote a parallel build system to decrease build times.
  • Wrote a C++ GUI library that uses a web browser as the graphical interface.
  • Reverse engineered the computers in vehicles.
Technologies: Embedded Systems, WebSockets, HTML5, JavaScript, Protobuf, C++, C

Contract Developer

2015 - 2015
Prey, Inc.
  • Created a screen locking application using C++ and Win32.
  • Gained experience managing entries in the Ctrl+Alt+Del screen from C++.
  • Gained experience managing low-level hooks on Windows.
Technologies: C++, Win32

Student Employee

2014 - 2014
Walla Walla University
  • Created a people counter using C++ on an Mbed microcontroller.
  • Rewrote an Hour Bell controller using Bash, C++, and the Apache Web Server.
  • Created a parallel port access library using the Linux parport drivers.
Technologies: Mbed, ARM, Raspberry Pi, Linux, C++, C

Minecraft Clone

https://github.com/programmerjake/voxels-0.7
A Minecraft clone written in C++11 using OpenGL.

3D Graphics Library

https://github.com/programmerjake/lib3d
3D graphics library with support for software rendering using a fast custom engine and hardware rendering using OpenGL. Supports output to window, disk (using FFmpeg), or terminal (using AAlib or caca). Supports render-to-texture.

SSA-based Optimizing Compiler Back-end

https://github.com/programmerjake/my-compiler
SSA-based optimizing compiler back-end. Currently targets x86 32 and 64-bit Linux. Supported optimizations include constant propagation, dead code elimination, register allocation, and control-flow simplification.

MIDI Wave Table Synthesizer

MIDI wave table synthesizer converts from .mid to .wav files.

Hashlife-based Cellular Automaton Simulator

https://github.com/programmerjake/hashlife
Simple Hashlife-based cellular automaton simulator written in C++11 using SDL for graphics. Supports any 2-state rule expressible in Golly's notation (eg. B3/S23). Properly simulates changing backgrounds.

Kazan

https://github.com/kazan-3d/kazan
In-progress software-rendered Vulkan API implementation that uses LLVM as the shader compiler back-end.

RV32 CPU

https://github.com/programmerjake/rv32
A RISC-V processor written in Verilog that I can successfully run a simple 3D maze game on. The processor implements the RV32I instruction set.

Languages

C++14, Assembler x86, C, Verilog, Bash, C++, HTML5, Rust, Maxima, ECMAScript (ES6), BC, MIPS, Markdown, Visual Basic for Applications (VBA), Visual Basic 6 (VB6), JavaScript, Java, D

Libraries/APIs

Standard Template Library (STL), LibC, SDL, OpenGL, POSIX, Sockets, Protobuf, Libxcb, Libssh2, Vulkan, Pthreads, OpenSSL, HTML5 Canvas, Node.js, Libpng, Windows API

Tools

Git, GCC, FASM, KDevelop, Eclipse IDE, GitHub, Code::Blocks, Meson, Mathematica, Xilinx Ise, LibreOffice, GDB, GitHub Pages, CMake, Make

Paradigms

Procedural Programming, Concurrent Programming, Object-oriented Programming (OOP), RISC-V, Template Metaprogramming

Platforms

Linux, Ubuntu Linux, MS-DOS, Eclipse, Win32, Raspberry Pi, Docker, Apache2, Arduino, Visual Studio Code (VS Code), AVR

Other

Clang, Parsers, g++, Memory Mapped Files, Lambda Functions, Digital Electronics, Analog-to-digital Converters (ADC), Embedded Software, Digital Design, Transmission Control Protocol (TCP), Text Processing, Regular Expressions, ARM, Embedded Systems, Rendering, OS Design, Mbed, Matrix Algebra, Soldering, ARM Embedded, Machine Language, Neural Networks, Game AI, PID Controllers, Numerical Methods, Procedural Generation, Batch Scripting, Command Prompt (CMD), Open Source, Wine & Wineries, Serial Peripheral Interface (SPI), CAN Bus, Power Electronics, Chemistry, Physics, Discrete Mathematics, Linear Algebra, Calculus, WebSockets, LLVM, MIDI

Storage

JSON, SQLite

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring