Skip to content

vinipsmaker/resume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

Vinícius Oliveira

https://vinipsmaker.github.io/ vini.ipsmaker @ gmail.com

C++ - Git - HTTP - Qt - async - MongoDB - Rust

Qualifications summary

  • I like network-facing problems.

  • I like to code applications where performance matters.

  • I’m used to code cross-platform applications (this goes against previous point given you can tune performance even further when targeting a single platform).

Github/Gitlab Projects

  • Emilua: Execution engine for Lua.

    • A complete (sync primitives, interruption api, cleanup handlers, fiber-local storage, you name it) fiber-based IO concurrency runtime for Lua.

    • Also implements an actor API to exploit multi-VM parallelism.

    • TCP, UDP, UNIX signals, UNIX local sockets, serial ports, name/service resolution, IPv6, TLS, HTTP, WebSocket, low-level controls (e.g. TCP OOB), filesystem.

    • Native plugins (i.e. DLLs) support to extend Lua functionality. It has been used to integrate Boost.Asio to foreign event loops (e.g. GLib).

    • Linux namespaces.

    • Implementation: Boost.Asio, Boost.Hana, Boost.PP, Boost.DLL, Boost.Nowide, re2c, code/bytecode generation, build systems integration, atomics, thread pools, events, async IO, flow control, scalable design, work units lifetime, deadlock prevention, non-blocking APIs, interruptible calls, (Lua) program crash handling, adherence to OS conventions, cross-platform.

    • Simple to use. It does a lot, the implementation is complex, but it’s simple to use (and it presents safe APIs).

  • vinipsmaker/tufao: Event-oriented HTTP/WebSocket framework for C++ built on top of Qt.

    • Project started in 2011.

    • 359 stars on GitHub.

    • 19 users on the mailing list.

    • Inspired by Node.js.

    • C++, but cross-platform.

    • Great documentation (reference, tutorial, examples, QtCreator plugin to speedup…).

    • Very flexible.

    • I presented Tufão on one of the largest free software events in Brazil — FISL.

    • It gave me experience on how to coordinate collaboration with possible contributors, how to encourage positive feedback, run a free software project…

  • libdepixelize » Implementation for the Kopf/Lischinski vectorization algorithm for depixelation of non-blended non-anti-aliased pixel art.

    • Developed as part of a GSoC 2013 project.

    • It was a great challenge to do research, learn from research (mostly documents that aren’t teaching oriented and aren’t easily indexed), play with math and implement an algorithm for which I found no alternative implementation that I could use for reference.

    • Gave me a taste of how awesome the Inkscape community is.

    • The opportunity to make improvements [1] [2] [3] [4] to an algorithm that were already awesome.

    • The opportunity to work with really smart people (I cannot express how much I enjoyed the experience).

    • Used in Inkscape to vectorize pixel art.

  • BoostGSoC14/boost.http: This library can be used to create applications that need to expose services through HTTP (e.g. embeddable ReST services).

  • vinipsmaker/tamanduang: a compiler class' assignment

    • My first Rust code.

    • A lexer for a shitty language that I’m designing.

  • vinipsmaker/tufao-qtcreatorplugin: plugin for QtCreator IDE to easily create new Tufão projects

    • It gave me experience on how to work with mysterious APIs that are half-baked, underdocumented and break API every release.

    • Fair enough, it’s a very small project.

  • vinipsmaker/logica-whopper: Just a logic class' assignment.

  • vinipsmaker/drunken-octo-sansa: Random code to solve random problems

    • Code created while I was training to compete on the ACM-ICPC.

  • vinipsmaker/c-except: An exception system for C in a single header file

    • Just an experiment to see how I’d implement an exception system for the C language.

  • vinipsmaker/dotfiles: Config files for my ArchLinux system

Technical Skills

  • Programming Languages: Rust C++ Python JavaScript Java

  • Frameworks: STL Qt GStreamer Boost.Asio

  • Tools: Git CMake Emacs ZSH AWK

Professional Experience

  • C++ developer, Expertise Solutions, Brazil (September, 2014 – September, 2015)

    • Implement JavaScript bindings for the EFL toolkit.

    • Technologies got to work on: C++ v8 EFL JavaScript Git autotools.

  • Rust developer, MaidSafe, remote (June, 2015 – December, 2016)

    • Help the development of SAFE network.

    • Major parts of contributed code in Rust, but also took part on fixing code on the FFI boundaries between C and JavaScript (NodeJS).

    • Got to work with NAT traversal research and implementation.

    • Cross-platform and scalability issues related to network APIs.

    • Technologies got to work on: Rust Git.

  • C++ developer, BlinkTrade, remote (February, 2017 – October, 2020)

    • Help develop a trading platform for cryptocurrencies.

    • Develop a fiber library.

    • Develop the web-facing gateway that absorbs most of the concurrency problems in the pipeline (routing requests, multiplexing many channels, keeping state synchronized, renegotiating state, broadcasting events, synthesizing lost events, ensuring DoS-protection limits, opportunistically compressing notification queues, perform proper scheduling strategies to avoid classical problems such as starvation and that kind of problem…​ and many more).

    • Implement JSON parsing ideas to merge multiple validation layers into an one-pass operation. You can have a grasp on the kind of ideas used by reading the review I’ve submitted to Boost.JSON.

    • Teamwork in the protocols design process.

    • Orchestrate dependencies in the C++ tooling hell for moving APIs.

    • Technologies got to work on: C++ Boost.Asio ZeroMQ WebSocket JSON.

Undergraduate Courses Taken

Extra Curricular Awards