I'm David Teather 👋

Engineer @ CrowdStrike

Ever evolving as a software engineer

Popular Repos's Logo

Popular Repos

stars

YouTube Tutorials's Logo

YouTube Tutorials

views

LinkedIn Courses's Logo

LinkedIn Courses

learners

Recent Blog Posts

Adding UML Diagrams to Rehype in Astro

Adding UML Diagrams to Rehype in Astro 10/7/2024

I just recently added UML diagrams for my blogs, since in the future I want to create blog posts and youtube videos about system design and wanted to define UML diagrams in markdown and have them rendered out. In this blog post I'll show you how I got UML diagrams like these to work with my current setup of Rehype + Astro. I also wanted to be able to put images in which was annoying enough to encourage me to make a blog post about this I decided to use mermaidjs to define and render out the diagrams since it seems to get the job done and honestly it had a better website and more stars than alternatives on GitHub. Let's get started! Initial Setup We'll be using rehype-mermaid, the way this library and others work is it internally uses playwright which is a headless browser that uses the mermaid javascript library to generate the images. Unfortunantely this does make both installation and the build step need an additional dependency. Lets install this package with And install...

Is Web Scraping Ethical?

Is Web Scraping Ethical? 8/23/2024

For better or worse, we live in a world where data is power. This has been our reality for years, but the recent emergence of mainstream AI has only made this more publicly apparent from companies absorbing as much as they can train their LLMs. Debates have already been had about whether using your data in these LLMs is ethical. Still, I wanted to dive deeper and examine if the tools that AI companies and many others use to collect information from the internet are ethical or not. I've built most of the foundational parts of my early career and knowledge by doing a lot of web scraping for contracts, personal projects, and internships. Briefly about me, my most successful project by far is my TikTokAPI python web scraper with 1.5M+ downloads. When I was learning web scraping, there was no good single resource and I ended up making everything-web-scraping to help others learn. Doing all of this helped me get many web scraping related jobs with many of their business models relying hea...

Adding an Astro Search Bar

Adding an Astro Search Bar 7/26/2024

I recently reworked my portfolio website to focus heavier on blogs, and this included adding a search bar to search across across my site. In this blog post I'll walk you through how you can add your own! If you're just interested in the code here it is as a template website. Adding Search For search, I wanted a locally powered search engine so I don't have to pay or rely on third party APIs as my site only has a handful of pages and is small enough to handle in-browser search fast. To make our lives easier we'll be using astro-pagefind which uses the pagefind as a search engine. Installing First install the package into your astro project. After that's installed we have to add the integration into our Astro config. Next, let's make a basic search page. This is all you need for the most basic search functionality. Next, we need to generate the search index which pagefind will use to efficiently query your site. You can do this manually but I modified my package.json to d...

Recent Projects

TikTokAPI Python Package

TikTokAPI Python Package 5/26/2023

With over a million downloads, used by over 250+ companies, cited in research papers by Yale, Northwestern, the United Nations (UNESCO), and more. This project has been my most successful so far. It holds great significance to me as I learned so much from creating this project mostly about web scraping, and due to its popularity I've had tons of great opportunities resulting from this project. Highlights Widespread Adoption 250+ companies are using TikTokAPI or a derivative of it 1M+ Downloads 3K+ GitHub stars Cited use by 10+ university-level research papers from: Yale, Northwestern, the United Nations (UNESCO), and more! Learned the following Web Scraping Forging API requests Avoiding Headless Browser Detection Maintaining An Open-Source Community Create Test Cases CI & CD And So Much More Why This Was Created On the surface this python package may seem fairly trivial to recreate as it just extracts information from the TikTok web app. Web scraping is a very common and (usually) ...

The Response Times

The Response Times 5/25/2023

My journey into security analysis started with YikYak, a social media app, exposing post GPS locations. I initially only was looking at YikYak to create a python package for interacting with their API but their API was exposing the locations of each post, allowing a potential bad actor to track the movements of users based on their posting activity. As much as I'm dissapointed in the lack of security around protecting user's data, I'm glad I discovered it because it made me start my security blog on The Response Times and help protect user data from malicious actors. Highlights YikYak Featured in Vice & The Verge YikYak were exposing precise GPS coordinates accurate to within 10-15ft to everyone Created a cool little anonymized heatmap YikYak implemented some changes that somewhat improved privacy, then they were bought out LINK.social Had a hugely insecure login flow that allowed anyone to login as any other account The API route took a user id and returned that user's authorizatio...

Portfolio Website

Portfolio Website 5/24/2023

Well you've already seen it, but I'll go into more detail about the: tech stack, my thought process, and more. The Concept I had a portfolio website before this one, but the home page was a little text heavy and quite cluttered. I wanted something that felt cleaner, I had the following in mind Live statistics, like the number of GitHub stars so I wouldn't have to manually update it A clean and text-light hero section Interactive elements from my old site like hovering over a post for it to grow in size A "chat" popup as a call to action Responsive Tech Stack React.js Astro TypeScript TailwindCSS DaisyUI Cloudflare Workers AWS S3 Live Statistics This was the main feature I wanted to have on this site. Whenever I've had to update my website or my resume it's always annoying to see how out of date the numbers are so I decided to make it live. It uses Cloudflare workers to web scrape these numbers in real-time, which is cached for about an hour. I spent a lot of time laying out the ...

My Recent Career

CrowdStrike

CrowdStrike 6/1/2023

This summer at CrowdStrike, I got my hands dirty with some serious coding and problem-solving. As a Software Engineering Intern, I dove into Go, AWS, CI/CD practices, microservices, and Docker. Here’s what I did: Highlights LQL Parser, Lexer, and VM: Tackled the challenging task of developing a parser and lexer for the LogScale Query Language (LQL). My goal was to translate LQL statements into a custom, efficient bytecode, enhancing the speed and efficiency of event manipulation. I also built a Go-based virtual machine (VM) to execute the bytecode, ensuring that LQL queries ran smoothly and reliably in our cloud microservices. Linter Tool for Code Integrity: Designed a linter tool from scratch. The aim was to catch bugs early and ensure the integrity of our codebase before anything went live to clients. This tool became a crucial part of our development cycle, saving countless hours of debugging and fixing post-deployment issues. Custom Testing Framework for LQL: Created a testing fr...

LinkedIn Learning

LinkedIn Learning 5/23/2023

In spring 2023, I had the opportunity to work with LinkedIn Learning to create a course on GitHub Codespaces for students! Despite designing the course with school and work, I throughly enjoyed it and I solidified a lot of my skills in content design along the way. Get 24 hours of free access to the short course on my LinkedIn post Highlights Upskilled 1.6K+ learners interested in GitHub Codespaces Designed engaging and practical real-world projects and examples Created a universally applicable cirriculum for all students Conclusion This experience only further solidifed how much I love creating content and teaching others. I'm excited to continue creating content and teaching others in the future!

Collab

Collab 6/1/2022

I joined Collab and began working on adding a second data source to the recently acquired TrendPop's platform. As a somewhat of a content creator myself, it's been really exciting to have worked so closely to the creator economy. Highlights Analyzed the most efficient way to extract data from YouTube Used Golang to write an efficient abstraction for forging YouTube's unofficial API Designed and implemented scalable jobs with Apache Spark to track and discover new entities Extracted and stored over 1 billion total records including: videos, channels, playlists, and comments Automatic reporting of metrics associated with the code sent to Grafana Internship Overview My internship consisted of 3 main parts: creating an engineering proposal plan, implementation, and finally a presentation open to the entire company which included some execs. Engineering Proposal Plan (~4 weeks) The goal of creating this proposal was to align the entire team with what I would be doing over the summer a...