Portfolio
-
httpretty
httpretty is a Go package to print the HTTP requests of your Go programs on the terminal screen.
It is mostly inspired in curl's verbose mode, and also on the httputil.DumpRequest and similar functions.
It implements a net/http RoundTripper for the HTTP client and an HTTP Handler for the server that intercepts the requests and extracts information out of it in a safe way, without modifying the original values wrapping your HTTP client transport layer or HTTP request multiplexer.
You can use it to debug your server, to provide networking context about requests on your CLI by adding or improving your --verbose flag, and even create an HTTP client REPL with minimal effort as shown!
-
WeDeploy and Liferay DXP Cloud CLI Tool
I designed, implemented, and maintained the original CLI tool for WeDeploy and Liferay DXP Cloud. we was wrote in Go, and later renamed as lcp when WeDeploy was phased out when Liferay decided to focus on its successor, Liferay DXP Cloud.
I also collaborated on other parts of the projects, such as on planning the Docker Swarm to Kubernetes migration and writing the kubeapply microservice.
The CLI tool project had many interesting aspects, such as:
- Used git as a reliable transport layer after using tar deployment packages manually turned out to be suboptimal.
- Remote shell access over WebSocket with socket.io to permit our users to execute commands inside their containers (this required reverse engineering of the socket.io protocol due to lack of a formal specification).
- I built a telemetry system for collecting diagnostics and anonymized usage metrics from our users (climetrics).
-
Vehikel co-founder
Vehikel is a used vehicle marketplace website inspired by Craigslist and eBay. I created it around 2013, but after the initial implementation was ready, we didn't invest in it. The source code is publicly available on GitHub.
The most exciting thing is the real-time search engine developed with ElasticSearch and its faceted filters. Edit-in-place providing great usability and accessibility is another selling point.
-
Tic-tac-toe game academic
I wrote this small game in C++ and OpenCV as a project for my Computer Graphics course. It has nothing special, but I found it pretty cool to do.
-
accidents academic
-
to-post.it founder
to-post.it is a minimal posting service for Twitter users. They can use it to post stories just like they would do on a blogging platform.
Medium actually started with the very same goal.
-
trazqueeupago.com founder
trazqueeupago.com is a social marketplace that allows Twitter users to quickly tell what they want to buy or sell based on their location and connections.
The idea was to create a network similar to eBay but less formal, for second-hand goods and to empower people who had difficulty to access market goods (for example, living in closed economies).
-
Cahier
Cahier is a B2B SaSS corporate social network by MGR Tecnologia.
I've worked on it as a backend engineer both with PHP and JavaScript (Node.JS), mostly implementing new features.
The most exciting feature I've built there was a Facebook-like chat system on top of socket.io and Node.js (with a PHP backend for storing messages). I also helped to refactor legacy application code and database queries (SQL) to solve performance bottlenecks using profiling techniques.
-
Plifk founder
Plifk is the first web service I created and made available online. It is a file sharing web service that uses Amazon S3 in the backend. The user experience was heavily inspired by Flickr, Twitter, and Multiply with progressive enhancement, a great GUI, and a RESTful API supporting OAuth 1.0.
The idea was ambitious, and I started just when Dropbox was beginning to establish itself as a market leader. Unfortunately, I encountered no business support to continue on this endeavor.
One interesting thing about it is that it was one of the first sites to have an upload progress bar. Back then there was no way to do it natively with HTML, so people usually didn't have it or made it with Macromedia's Flash player. I used a Zend Framework solution that used long polling to overcome this lack of client-side support and it worked like a charm.
Also, I postponed paying for a pricey HTTPS support because it was expensive back then, and unfortunately it's still running over HTTP. At least I'm glad I stored passwords appropriately hashed instead of storing in plain text or hashed with MD5 as most people did back then.