Origins
I’d like to take some time to reflect on my upbringing and relationship with technology. We’re all products of our environment; understanding why we are who we are is (in my opinion) necessary to make sense of ourselves and the world we live in.
The early years
I was born at the turn of the century and a few months before Windows XP was released. I was too young to really experience the internet as it was developing in the early 2000s, but I can at least recall spending my fair share of time playing 3D pinball on the family computer. Growing up, I didn’t particularly have much of an interest in technology anyway, spending most of my time going to school, playing outside, or at home with my family.
It wasn’t until I was in the 2nd grade that my interest in computing really began to flourish. At the time, Minecraft was a phenomenon that captured the attention of many, myself included. As much as I enjoyed the game in all its aspects, I was particularly drawn towards its redstone mechanics, which (unbeknownst to me) were an implementation of logical gates and circuits. I’d be lying if I said I was any good at redstone, but following along with guides and fixing issues taught me foundational troubleshooting skills.
My friends and I would hop on Skype calls after school and play for hours on the various public servers available, but we always wished we could have our own private server. This problem led me down a rabbit hole of YouTube tutorials (the kind with no voiceover and a notepad writing out instructions) to learn how to run a game server on my computer, open ports on my router to accept external traffic (port forwarding), and create a virtual private network using LogMeIn Hamachi so my friends could connect remotely. By the time Skype was falling out of fashion, hosting Mumble and TeamSpeak servers so we could keep talking over the internet was an easy enough task.
Adolescence
In 5th and 6th grade, I got my first exposure to programming languages using Scratch in game development and robotics electives. Writing code (albeit with blocks) was fun; being able to build things and share them with others was a wonderful creative outlet. The robotics class was especially insightful since it allowed me to work in both the software and hardware layers; I found myself naturally gravitating towards software since I could write code at home but didn’t have access to the materials and tools for hardware development.
As I was entering high school, I started to teach myself web development using jQuery, PHP, and MySQL. Before the age of cloud computing, I remember going to a data center with my Dad to install and configure servers in a rack the company he worked for was renting. There were some empty slots, so I was able to set up a small personal server that I used to learn Linux, SSH into it from home, use FTP to upload files, run a MySQL database, and configure Nginx to serve PHP web apps.
With this experience, I had the opportunity to take on projects for community organizations, local businesses, and freelance work for my Dad’s employer throughout the remainder of my high school years; at this point hosting them on AWS or DigitalOcean VPS instances.
College
By the time I was ready to go to college, I had led efforts to update the tech stack used in my freelance work to modern libraries such as React and backend languages like Node.js and Go. The decision to pursue a Bachelor’s in Computer Science was the obvious choice, and I also earned a Minor in Entrepreneurship.
At the start of my sophomore year, I got my first internship at an e-commerce company, Miva, as an internal software engineer. I worked alongside a data science intern and a senior software engineer, and reported to the Chief Information Officer. The data science intern was tasked with creating a data model to simulate the wait times for a phone queue, and I was tasked with building a Python microservice to query historical data and run the model for integration into their internal support agent scheduling Laravel application. My impact went beyond my assigned project. The team was small, and when I started, much to my surprise, they weren’t using git; I advocated adoption, taught the data science intern how to work with it, and by the time I completed my internship, git was the standard for all codebases.
During my junior year, I became interested in startups and their capacity to offer innovative solutions to real problems. I was already taking classes for a Minor in Entrepreneurship when I joined my university’s student innovation incubator and participated in the National Science Foundation’s I-Corps program to learn lean startup methodologies and customer discovery.
I identified a problem I had encountered in my own life: programmatic PDF generation. When I was doing contract work, I was tasked with creating dozens of dynamically generated PDFs for a client, and to keep it short, it was a pain. Most programmatic PDF generation uses either low-level implementations (tedious and overkill for such a simple feature) or an HTML-to-PDF approach (which requires fighting against HTML and CSS website-oriented layouts and a headless browser). For the contracted project, we ended up going with JasperReports, an open-source reporting engine built in Java. It worked well enough, providing a visual interface for template design, but it was somewhat slow and required supporting a Java runtime for an ecosystem of apps that didn’t use Java for anything else.
I set out to build a SaaS product to solve this problem by offering a web-hosted template designer, cloud-hosted storage and API access, and organizational-level access control for secure collaboration. Given my obligations with school and freelance work to pay the bills, this bootstrapped project quickly grew too large for me to continue. Despite having to take a step back from the project, I learned many useful skills related to rapid prototyping, iterative product development, scalable infrastructure, and building a business. I’ve recently rebuilt the project from the ground up as an open-source initiative and released an alpha version: you can read more about it here.
In my senior year of college, I was hired at NerdWallet as part of their summer internship program. This was my first role at a publicly traded company with hundreds of employees and a robust engineering discipline. I received mentorship from a talented staff engineer while I worked on a project to build a Data Change Event caching system to assist the user ops team with debugging efforts using Go, Terraform, AWS Lambda, SQS, and DynamoDB. I also got to learn about Agile development, code reviews, and CI/CD practices (something I’ve carried with me to future projects).
I of course took the traditional classes that make up a Computer Science program, but I can’t say I found most of them too interesting or practical. What I did enjoy were the projects these classes assigned, as these served as a better representation of solving real problems. Group projects were fun too; I used them as an opportunity to teach my peers front-end development (something you don’t get to do much of in a CS program) and best practices such as automated testing and git; you’d be surprised how many CS students use Google Drive or the like for version control.
Moving forward
Now that I’ve graduated and put in the hours to become a competent engineer, I’m excited to contribute my skill set to organizations passionate about building cool things, solving real problems, and most importantly, improving the lives of real users through technology.
From my perspective, engineering isn’t so much about what you know, but about your capacity to learn what you don’t. I look forward to continuing to grow as an engineer, learning from others, and helping out where I can.
# Origins
I'd like to take some time to reflect on my upbringing and relationship with technology. We're all products of our environment; understanding why we are who we are is (in my opinion) necessary to make sense of ourselves and the world we live in.
## The early years
I was born at the turn of the century and a few months before Windows XP was released. I was too young to really experience the internet as it was developing in the early 2000s, but I can at least recall spending my fair share of time playing 3D pinball on the family computer. Growing up, I didn't particularly have much of an interest in technology anyway, spending most of my time going to school, playing outside, or at home with my family.
It wasn't until I was in the 2nd grade that my interest in computing really began to flourish. At the time, Minecraft was a phenomenon that captured the attention of many, myself included. As much as I enjoyed the game in all its aspects, I was particularly drawn towards its redstone mechanics, which (unbeknownst to me) were an implementation of logical gates and circuits. I'd be lying if I said I was any good at redstone, but following along with guides and fixing issues taught me foundational troubleshooting skills.
My friends and I would hop on Skype calls after school and play for hours on the various public servers available, but we always wished we could have our own private server. This problem led me down a rabbit hole of YouTube tutorials (the kind with no voiceover and a notepad writing out instructions) to learn how to run a game server on my computer, open ports on my router to accept external traffic (port forwarding), and create a virtual private network using LogMeIn Hamachi so my friends could connect remotely. By the time Skype was falling out of fashion, hosting Mumble and TeamSpeak servers so we could keep talking over the internet was an easy enough task.
## Adolescence
In 5th and 6th grade, I got my first exposure to programming languages using Scratch in game development and robotics electives. Writing code (albeit with blocks) was fun; being able to build things and share them with others was a wonderful creative outlet. The robotics class was especially insightful since it allowed me to work in both the software and hardware layers; I found myself naturally gravitating towards software since I could write code at home but didn't have access to the materials and tools for hardware development.
As I was entering high school, I started to teach myself web development using jQuery, PHP, and MySQL. Before the age of cloud computing, I remember going to a data center with my Dad to install and configure servers in a rack the company he worked for was renting. There were some empty slots, so I was able to set up a small personal server that I used to learn Linux, SSH into it from home, use FTP to upload files, run a MySQL database, and configure Nginx to serve PHP web apps.
With this experience, I had the opportunity to take on projects for community organizations, local businesses, and freelance work for my Dad's employer throughout the remainder of my high school years; at this point hosting them on AWS or DigitalOcean VPS instances.
## College
By the time I was ready to go to college, I had led efforts to update the tech stack used in my freelance work to modern libraries such as React and backend languages like Node.js and Go. The decision to pursue a Bachelor’s in Computer Science was the obvious choice, and I also earned a Minor in Entrepreneurship.
At the start of my sophomore year, I got my first internship at an e-commerce company, Miva, as an internal software engineer. I worked alongside a data science intern and a senior software engineer, and reported to the Chief Information Officer. The data science intern was tasked with creating a data model to simulate the wait times for a phone queue, and I was tasked with building a Python microservice to query historical data and run the model for integration into their internal support agent scheduling Laravel application. My impact went beyond my assigned project. The team was small, and when I started, much to my surprise, they weren't using git; I advocated adoption, taught the data science intern how to work with it, and by the time I completed my internship, git was the standard for all codebases.
During my junior year, I became interested in startups and their capacity to offer innovative solutions to real problems. I was already taking classes for a Minor in Entrepreneurship when I joined my university's student innovation incubator and participated in the National Science Foundation's I-Corps program to learn lean startup methodologies and customer discovery.
I identified a problem I had encountered in my own life: programmatic PDF generation. When I was doing contract work, I was tasked with creating dozens of dynamically generated PDFs for a client, and to keep it short, it was a pain. Most programmatic PDF generation uses either low-level implementations (tedious and overkill for such a simple feature) or an HTML-to-PDF approach (which requires fighting against HTML and CSS website-oriented layouts and a headless browser). For the contracted project, we ended up going with JasperReports, an open-source reporting engine built in Java. It worked well enough, providing a visual interface for template design, but it was somewhat slow and required supporting a Java runtime for an ecosystem of apps that didn't use Java for anything else.
I set out to build a SaaS product to solve this problem by offering a web-hosted template designer, cloud-hosted storage and API access, and organizational-level access control for secure collaboration. Given my obligations with school and freelance work to pay the bills, this bootstrapped project quickly grew too large for me to continue. Despite having to take a step back from the project, I learned many useful skills related to rapid prototyping, iterative product development, scalable infrastructure, and building a business. I've recently rebuilt the project from the ground up as an open-source initiative and released an alpha version: you can read more about it [here](/projects/jsonpdf).
In my senior year of college, I was hired at NerdWallet as part of their summer internship program. This was my first role at a publicly traded company with hundreds of employees and a robust engineering discipline. I received mentorship from a talented staff engineer while I worked on a project to build a Data Change Event caching system to assist the user ops team with debugging efforts using Go, Terraform, AWS Lambda, SQS, and DynamoDB. I also got to learn about Agile development, code reviews, and CI/CD practices (something I've carried with me to future projects).
I of course took the traditional classes that make up a Computer Science program, but I can't say I found most of them too interesting or practical. What I did enjoy were the projects these classes assigned, as these served as a better representation of solving real problems. Group projects were fun too; I used them as an opportunity to teach my peers front-end development (something you don't get to do much of in a CS program) and best practices such as automated testing and git; you'd be surprised how many CS students use Google Drive or the like for version control.
## Moving forward
Now that I've graduated and put in the hours to become a competent engineer, I'm excited to contribute my skill set to organizations passionate about building cool things, solving real problems, and most importantly, improving the lives of real users through technology.
From my perspective, engineering isn't so much about what you know, but about your capacity to learn what you don't. I look forward to continuing to grow as an engineer, learning from others, and helping out where I can.
Sebario