Resume - John Barbero Unenge
Contact
Email: john@lsrkttn.com LinkedIn: https://www.linkedin.com/in/john-barbero-unenge-b21981115 Github: https://github.com/JBarberU
Work Experience
-
Software Engineer - R&D
Kvaser AB
May 2024 - Currently Employed
At Kvaser I was hired as a generalist C/C++ programmer. So far I've worked on kernel and user space drivers targeting Linux and Windows.
-
Embedded Software Engineer
Nexer Group
May 2023 - April 2024
At nexer group I was hired as an embedded software engineer, primarily targeting the automotive industry. My work consisted of writing C++ user space applications (systemd services) running on an embedded ARM ECU. The work was generalist C++ code, implementing REST endpoints, debugging and optimizing code.
One of the more noteworthy tasks I completed was improving intersection testing for a navigation sub-system, utilizing my past games industry experience, to optimize performance. I was able to improve the performance by a few orders of magnitude, allowing for more fine grained positional updates at a higher frequency, while decreasing CPU load.
-
Software Engineer
Goals AB
August 2022 - April 2023
At Goals I was hired as a generalist C++ programmer, but ended up spending most of my time writing UI related code. Both for use in the Unreal Editor, as well as in the game runtime.
-
Technical Artist / Software Engineer
Electronic Arts (Ghost Games, Tiburon Entertainment)
March 2016 - August 2022 (Gothenburg, Sweden, Orlando, FL, USA and Madrid, Spain)
I was hired at Ghost games as a Technical Artist to supplement the team with my programming heavy background. My work consisted of a wide variety of tasks with a heavy focus on python scripting of artist workflows for Autodesk Maya. Additional work was done on implementing features in the Frostbite game editor for reviewing textures, as well as work on a proceural content generation tool written in C++/Qt.
After transitioning to Tiburon in November of 2018 my work shifted to a more pure Software Engineer with a heavier focus on tools programming. Some examples of my work:
- Reimplementing Microsoft Application Insights in C++ by reverse engineering the REST API through the C# SDK.
- Built a REST based client/server tool for capturing 4K HDR video off the latest gen game consoles and pipe that to shotgunstudio/network drives to facilitate better WFH art reviews.
- Recompiling plugins for new versions of Maya.
- Implementing a python based tool to allow a workflow that pipes shaders from game engine into Substance Painter.
- Maintaining a REST API bridging the game editor and other standalone tools and making sure the same code base works between engine updates.
- UI work (WPF, and some PyQt) on various internal DCC and asset management tools.
-
Software Developer
Dreamler AB
December 2013 - March 2016 (Gothenburg, Sweden)
I started out as "The Mac guy" porting the existing C++/DirectX9 based windows application to OS X, porting the graphics pipeline to OpenGL and reimplementing the HTTP- and UDP abstraction layers. Thanks to OpenGL and OS X's BSD base we got Linux support almost for free. After a few months I transitioned to a more general client developer doing anything from new UI features, to custom text-fields or pulling out the UDP protocol and replacing it with websockets. I was responsible for building and releasing the OS X and Linux versions of the application. I occasionally also got to do some work on Windows although that mostly consisted of debugging or setting up/maintaining the build system.
While employed at Dreamler I spent around 6 months consulting doing iOS test automation. My work consisted of setting up a test framework to enable UI click tests of a vehicle companion app.
-
Freelance Consultant
Self employed
January 2014 - January 2016 (Gothenburg, Sweden)
I did a few smaller projects in my spare time. The biggest of which consisted of building a Ruby on Rails backend and C++ (Qt) front-end for a separate, to the one mentioned below, camera production pipline. Besides this I managed to work with setting up build systems for native Android code and general Linux sys-admin work. -
Consultant
Chalmers Teknologkonsulter
February 2013 - December 2013 (Gothenburg, Sweden)
I worked at Chalmers Teknologkonsulter part time as an IT cunsultant during my studies at Chalmers. The work consisted of customer calls, sales meetings, requirement analyses as well as implementation. The bulk of the implementation work was writing custom software in C++ for a camera production line, but I also managed to do some Android game development using Cocos2d-x.
Hobby Projects
-
Unnamed keyboard
December 2023 - Ongoing
After building a macropad I got a taste for PCB design and have been working on a split keyboard design since December of 2023. I have two handwired prototypes with different layouts to figure out key positions and I'm currently going through the PCB design process.
-
SNES Macropad
June 2023 - November 2023
During the summer of 2023 I tought myself some basic PCB design and built a macropad that features a SNES controller port. I had the PCBs made by JLCPCB and built a handful of boards that I've been selling on a tindie pagetindie page (https://www.tindie.com/products/jbarberu/snes-macropad/). The macropad uses the open source firmware QMK and is completely programmable!
-
Bluetooth audio interface for RD4 (Citroën, Peugeot)
February 2023 - On the backburner
I'm currently working on another car audio bluetooth project. This time I'm using an ESP32 as the microcontroller, and I'm currently in the process of writing the bluetooth audio sink/media control code, as well as designing a PCB for the project. Next steps are to connect to the vehicle's CAN bus to figure out the messages that I'll need for accepting key presses, and displaying text. After that I'll be testing out a prototype.
-
Budget Application
June 2022 - Maintenance mode
I built a python based application for doing personal budgets. In the past I had used GNU Cash, but felt it was too slow and cumbersome to use. My application is Qt based and has a simple interface making implementing importers for bank statements very easy (super handy when moving around a lot and changing banks often). It has a Django based backend used for generating reports, but otherwise uses primarily local file storage.
-
Game Engine
March 2022 - Dormant
I'm working on a game engine / toy playground for graphics. It has an OpenGL renderer, and I'm working on a version for Game Boy Advance.
-
Bluetooth audio interface for BM53 (2003 BMW 530)
September 2020 - November 2020
I put together a python program for a raspberry pi to act as a bluetooth audio sink and media controller. It used the onboard bluetooth and GPIO to communicate with a simple PCB I put together hosting a LIN chip for the vehicle communication. I never got past the working prototype stage as I sold the vehicle before completion. At the end I had working audio playback through the car stereo, I was able to use the steering wheel buttons to control playback, and I was able to display track info on the dashboard. Essentially only missing packaging it all up as the final step.
Tools and Technologies
Languages, tools and libraries I work proficiently with
- Python
- C++
- C
- C#
- Rust
- Javascript
- Git
- Perforce
- Client/Server through REST, websockets, UDP, etc.
Languages, tools and libraries I've worked with in the past but that might be a bit rusty
- Haskell
- Subversion
- Ruby (on Rails)
- OpenGL
- Poco C++
- CMake
Platforms I have experience with, with level of proficiency from top to bottom
- Linux (Primarily Debian, or derivative distros)
- Windows
- OS X
- iOS
- Android
- Playstation 4
- XBox One
Human Language skills
- English, Native or bilingual proficiency
- Swedish, Native or bilingual proficiency
- Spanish, Limited working proficiency
Interests
- Table top RPGs, D&D in particular
- Video Games, with a special spot for older games on Game Boy and NES
- Tinkering with code/electronics
Education
-
Chalmers University of Technology
September 2011 - March 2014 (Gothenburg, Sweden)
I studied Computer Software Engineering, with courses such as:- Discrete mathematics
- Linear algebra
- Statistics
- Mathematical Modelling and problem solving
- Database design
- UI design
- Datastructures and algorithms
- Networking (IP, TCP/UDP, HTTP etc)
- Low level programming (assembly and C)
- Object oriented programming (Java)
- Functional Programming (Haskell)
- Computer Graphics (C++ and OpenGL)
Copyright (C) John Barbero