Felipe Kellermann @felipek
- Contact: me@felipek.com | felipek.com
- Resume: PDF | HTML | MD | Linkedin
- Networks: @felipek almost everwhere
Mobile consulting and creating products since the original iPhone SDK was released, focusing on native tools (UIKit, Objective-C) and backend (Django, Linux, IaaS). Recently supporting a SaaS product that already transacted millions of orders. Before that, worked as a C developer for embedded systems and controllers, security and networking solutions, and created a pluggable proxy (SOCKS and HTTP) while also supporting Linux deployments and embedded (BusyBox). Bachelor's degree in computer science.
- Areas: Mobile (iOS), Operating Systems, Networking, Protocols
- Systems: Darwin (macOS, iOS), GNU/Linux and BusyBox, FOSS
- Languages: Python / Django, Objective-C / Swift, C, shell script
- Researching: OpenTelemetry, Ansible, Rust, SwiftUI
History
Critical TechWorks: February 2022
Critical TechWorks is a joint venture to lead the future of motion. Established in 2018, Critical TechWorks is a company formed as a result of a partnership between BMW Group and Critical Software. Critical TechWorks is exclusively put together to support BMW in building software for its future driving machines.
Linux embedded and Python automation.
Negotti: November 2012 - February 2022
Started as a product of my previous company (Nyvra) that offered development services. Focused on creating a subscription-based product for a common ask of our customers at the time the iPad launched: a "digital catalog with dynamic sales force automation, fast, simple and offline for smartphones and tablets, combining products with marketing and sales."
Founder
- Created a new company to focus on a single subscription-based generic product
- Converted an app/library of the previous company (Nyvra) to a complete product
- Worked on the infrastructure (AWS, Linux), backend (Python, Django), app (iOS)
- Supported the multi-tenant solution serving both small and large customers
- Scaled to support thousands of daily devices and tens of millions of orders
- Automated several tasks from business (billing) to monitoring (alerts, events)
Backend
- Infrastructure: AWS (EC2 CloudWatch S3 CF Route53 Glue Athena EBS SNS SQS)
- Systems: GNU/Linux (Ubuntu), Fabric (deploys, automations), MySQL (database)
- API: Django (from the early days of 1.2 to 4.0) and Python (moved from 2 to 3)
- Caching: Custom Django ORM caching with Redis (models), Nginx/Memcache (HTTP)
- Observability: Prometheus/statsd/Grafana (metrics), CloudWatch/Athena (logs)
- Other: Jupyter (scripts, analysis), Celery (queueing, workers) and Supervisor
App (iOS)
- Reliable iOS app that started in the early days of 4.3 and 5.0 to modern 15+
- Support for a wide range of models / devices (universal) and system versions
- Completely generic app supporting custom targets and several "feature flags"
- Scripting engine (JavaScriptCore) for writing complex custom business rules
- Templates engine supporting custom print (HTML, PDF) and others (CSV, XLSX)
- Common core with targets for branded apps using automations (Fastlane)
Other
- Integrations in Python for several systems/customers (SQL, WS/REST/JSON, CSV)
- Abstracted integrations (SQLAlchemy, Requests) mapping to Python/Django (ORM)
- Structured logging and ETL pipeline with automations to auto alert customers
Nyvra: November 2009 - June 2016
Started a company to offer consulting and development services. Even though I started developing for the iPhone when the SDK was first released in 2008, only after publishing the first apps in 2009 that I decided it was time to create indie apps while supporting and helping other companies. Later on, started a new company (Negotti) in parallel to consulting jobs to create a SaaS business. Nyvra is ROT13 for Alien.
Founder
- Hired and managed 4 other people organizing remote work using early SaaS tools
- Organized work using initial versions of GitHub, Basecamp, Highrise, Zendesk
- Consulted for customers large and small in time-based and project-based jobs
- Trained experienced developers getting started on Objective-C/Foundation/UIKit
Consulting: 2009 - 2014
- Zenvia: Worked on many consulting jobs for the leading mobile company in Brazil
- Mobo: Created the iOS app for the pioneering mobile coupons company in Brazil
- Zynk: Created the iOS app for the startup that was a later acquired by Zenvia
- Other: NDrive (Portugal), Jornal NH, Pacotes, and many others
Training: 2010 - 2012
- Created a short lived company treinamentos.mobi to offer courses on mobile
- Created a new iOS/Objective-C course at a well-established trainings company
- Created custom course on iOS Security (portuguese) for a large local bank
- Gave talks on iPhone/iOS development at local mobile events and communities
Project - NearCinema (iPhone): 2008 - 2009
- Used the initial versions of the iPhone OS SDK when it was released
- Used early versions of CoreData, CoreLocation, CoreGraphics, MapKit and others
- Created an engine for on-device requesting/scraping HTTP movie/theather data
Project - FoodBrasil (iPhone): 2009 - 2010
- Created and released the app in 2009 using the then-improved SDK features
- Used newly released technologies in the SDK like MapKit, APNS, and 2x assets
- Maintained the app as it stayed at the top of the App Store charts for months
Project - MobileGuides (iPhone, Android): 2011 - 2012
- Managed the creation of a framework/tools/backend for conference apps
- Developed apps for some conferences using these tools and technologies
Hewlett-Packard Brasil: July 2008 - October 2009
Worked as a software developer using low-level C in a project that involved porting the architecture of a large NAS controller operating system firmware. This is exactly the same job position as the previous job but hired by Hewlett-Packard Brasil. Left HP to create my own company (Nyvra) when the iPhone OS SDK launched.
Software Developer
- Researched and developed (ANSI C) systems programming for a storage controller
- Worked on RAID subsystem developing and researching features and testing tasks
T&T Engenheiros: February 2008 - June 2008
Worked as a contractor for Hewlett-Packard Brasil as a software developer using C in a project that involved porting the architecture of a large NAS controller operating system firmware.
Software Developer
- Researched and developed (ANSI C) systems programming for a storage controller
- Worked on RAID subsystem developing and researching features and testing tasks
Interage Informática: April 2005 - January 2008
Worked on Linux deployments/automations for security (Squid, Netfilter, Snort), e-mail (Sendmail, Procmail, SpamAssassin), and storage/authentication (SSH, Samba, Apache), and created from scratch a SOCKS4/5 (ANSI C / POSIX / pthreads) supporting pluggable modules (shared objects) with hooks to log and control custom protocols (e.g.: MSNP, Jabber, HTTP1).
Software engineer (C)
- Created a daemon from scratch (ANSI C / POSIX) for SOCKS4/5 proxy with plugins
- Created an engine for pluggins using shared objects (dlopen) for events/hooks
- Created plugins for protocols both proprietary (MSNP) and RFC based (XMPP)
- Created build and configuration support using GNU autoconf and automake
- Created custom event-based protocol using XML and asynchronous TCP responses
- Created support for transparent proxying for Linux (netfilter) and BSD (ipfw)
- Used Valgrind and related tools, OpenSSL and libevent
Sysadmin (Linux)
- Created shell scripts for automating Linux settings (daemons, networking)
- Created console interface (ncurses, dialog) to automate Linux deployment tasks
- Security: Netfilter rules, Snort settings, Nagios monitoring, IPSec for VPN
- E-mail: Sendmail for MTA, Procmail for automations, SpamAssassin and ClamAV
- HTTP: Apache and CGIs using Perl for automations of standard commands and files
- Proxy: Squid for HTTP filters and caching, dnsmasq for DNS, custom TCP balancer
Unisinos: February 2003 - March 2005
Researcher: Researching and creating artifacts for experiments in areas of mobile & pervasive and distributed computing, networking (ZeroConf) and language/frameworks. Contributed to papers (internal and published). Used Linux, C++, shell and make, gnuplot for plotting, and TeX/LaTeX.
Education
- Bachelor degree, Computer Science, Universidade do Vale do Rio dos Sinos
- TA: Programming and algorithms.
Open Source
- Before Git existed created patches to projects like BusyBox, pcap and coreutils
- In the early days of iOS open sourced an app to teach others UIKit/Objective-C