<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>A Thoughtful Data Nerd</title><link href="https://www.alex-antonison.com/" rel="alternate"/><link href="https://www.alex-antonison.com/feeds/all.atom.xml" rel="self"/><id>https://www.alex-antonison.com/</id><updated>2026-04-05T00:56:12.380244+00:00</updated><subtitle>Data engineering, architecture, and leadership</subtitle><entry><title>How to Build a Data Platform</title><link href="https://www.alex-antonison.com/posts/how-to-build-a-data-platform/" rel="alternate"/><published>2025-04-06T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2025-04-06:/posts/how-to-build-a-data-platform/</id><summary type="html">&lt;p&gt;When building a data platform, it’s tempting and admittedly, a lot of fun, to dive straight into the latest and greatest technologies, running proof-of-concepts and benchmarking tools to find the top performer. But over the course of my career, I’ve seen this approach fall short time and time …&lt;/p&gt;</summary><content type="html">&lt;p&gt;When building a data platform, it’s tempting and admittedly, a lot of fun, to dive straight into the latest and greatest technologies, running proof-of-concepts and benchmarking tools to find the top performer. But over the course of my career, I’ve seen this approach fall short time and time again.&lt;/p&gt;
&lt;p&gt;At the end of the day, the role of a Data team is to deliver value to the business through data products. While it’s easy to get caught up in building a platform that aims to “do it all,” this often results in projects that take significantly more time and budget than the business is willing to support. Focus should always start with delivering business value, not chasing perfection in infrastructure.&lt;/p&gt;
&lt;h2 id="business-questions"&gt;&lt;a class="toclink" href="#business-questions"&gt;Business Questions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The first step you should take is to answer the following business questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Clear Business Problem Statement:&lt;/strong&gt; Without a clear problem statement, a data platform can quickly spiral into trying to solve every possible problem. A well-defined problem sharpens the project’s focus and helps identify practical requirements, such as whether data needs to be updated hourly, daily, or in real time. As with any successful project, clearly understanding the business problem is essential before any work begins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team skillsets:&lt;/strong&gt; Is the team made up of experienced Data Platform Engineers familiar with running open-source big data solutions, or is it a smaller team, perhaps composed of Data Analysts with some engineering knowledge? If the team lacks deep engineering experience or bandwidth, it's often wiser to lean toward user-friendly managed services. And when bringing in external consultants, be sure that any recommended solution is maintainable by the existing team. Otherwise, you risk becoming dependent on specialized hires just to keep the platform running.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Existing Technology:&lt;/strong&gt; What tools are currently in use across the company? Is there already a Cloud Data Warehouse in place? Are other teams using an orchestrator? Before introducing new solutions, it's important to first assess the existing tooling. Other teams may have already invested time and effort into setting up tools, managing deployments, and negotiating pricing; leveraging this existing work can save significant time and resources.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Timeline:&lt;/strong&gt; What is the timeline for implementing a solution? If the deadline is tight, it may be necessary to start with a more expensive, narrowly focused managed service to meet immediate needs, while keeping a longer-term plan in place for building a more scalable and cost-efficient solution. Even with a longer timeline, it's still important to start small and gather iterative feedback from stakeholders to ensure the solution evolves in the right direction.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Infrastructure Budget:&lt;/strong&gt; Establishing a realistic budget is essential, though often challenging. The necessary funding will be directly influenced by factors like team capabilities, project timelines, and leveraging existing technologies. To operate within budget constraints while delivering initial value, you may need to strategically narrow the project's scope, such as addressing a subset of key markets initially. This focused strategy ensures the platform delivers tangible value early, within budget, while building a foundation for future scaling.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="data-questions"&gt;&lt;a class="toclink" href="#data-questions"&gt;Data Questions&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Next, once the key business questions are sufficiently answered (and documented), you can move onto the 5Vs + S of data. This topic has been thoroughly covered so I will just highlight them below:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Volume: How much data is needed?&lt;/li&gt;
&lt;li&gt;Velocity: How frequent does the data need to be processed?&lt;/li&gt;
&lt;li&gt;Variety: What kind of data are you working with? Structured? Unstructured?&lt;/li&gt;
&lt;li&gt;Veracity: How trustworthy is the data source? Do you need to build data quality checks into the ingestion pipeline to catch bad data coming in?&lt;/li&gt;
&lt;li&gt;Value: How valuable is the data source? It is important to balance the value of a dataset versus how much it costs to ingest and manage.&lt;/li&gt;
&lt;li&gt;(Extra) Sensitive: When you are dealing with sensitive data, it is crucial to ensure that it is sufficiently protected at motion and at rest.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="poc-time"&gt;&lt;a class="toclink" href="#poc-time"&gt;POC Time!&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Congratulations! With this information in hand, you can now start considering what tools will make sense to start doing POCs for a data platform.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="other-data-topics-to-consider"&gt;&lt;a class="toclink" href="#other-data-topics-to-consider"&gt;Other data topics to consider&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Manage only data that matters:&lt;/strong&gt; Storing data in low-cost storage is perfectly acceptable, but active data management should be reserved for data that directly supports specific business problems. Resist the urge to "manage everything just in case", this often leads to scope creep, missed deadlines, and budget overruns. Instead, prioritize managing high-impact data and keep the rest in accessible storage. Raw data can still be made available to analysts and stakeholders to help uncover what’s truly valuable over time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Development Workflow:&lt;/strong&gt; Creating a streamlined data development workflow is essential. When the feedback loop for testing and iterating on ideas is too slow, it becomes a major bottleneck, dramatically reducing productivity and slowing innovation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Testing:&lt;/strong&gt; Just like in software engineering, testing is essential, and in data work, it's all about trust. Data teams must ensure the reliability of the data they deliver. Without proper testing, it’s nearly impossible to catch issues introduced by pipeline changes that could break downstream data products. Data tests not only catch technical failures but also surface incorrect assumptions that might otherwise go unnoticed. When thoughtfully designed, they can flag issues early, well before they impact stakeholders or end users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Development Standards:&lt;/strong&gt; In the absence of development standards, whether it be naming conventions, code formatting, or rules around documentation, even simple data platforms can become challenging to maintain. Fixing these problems down the road can also take a significant amount of work and requires rigorous testing to ensure nothing is broken during the refactor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataset Release Cycle:&lt;/strong&gt; Whenever a dataset is released, the absence of clear release standards can make it difficult to iterate, improve, or even safely remove columns, since such changes may break downstream dashboards or integrations. To avoid this, it’s important to establish clear standards from the start for labeling datasets as alpha, beta, or production-grade. These classifications set expectations for stability and help teams manage change more effectively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Governance:&lt;/strong&gt; Data should only be shared with the appropriate users across the organization. It’s far easier to establish the right access controls from the start, rather than trying to restrict access later, which can disrupt business processes and potentially lead to compliance or regulatory issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataset Discoverability:&lt;/strong&gt; Ensuring datasets are well-documented and effectively communicated across the organization is essential. In the early stages, this might simply mean using your team's existing documentation tools. However, as the data platform scales, adopting a dedicated data catalog can help maintain discoverability and ensure that datasets remain accessible and understandable to all stakeholders.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you have gotten this far, I am sure you have noticed that I have not mentioned any specific technologies throughout this post largely because the tools themselves do not matter. What is important is figuring out how to break down business problems into solvable parts and identifying the right tool based on the above constraints.&lt;/p&gt;
&lt;p&gt;Happy building!&lt;/p&gt;</content><category term="posts"/></entry><entry><title>Introduction to a Data Lakehouse with AWS Athena, dbt, and Apache Iceberg - Part 1</title><link href="https://www.alex-antonison.com/posts/introduction-to-a-data-lakehouse-part-1/" rel="alternate"/><published>2025-04-04T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2025-04-04:/posts/introduction-to-a-data-lakehouse-part-1/</id><summary type="html">&lt;h3 id="introduction"&gt;&lt;a class="toclink" href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The concept of a Data Lakehouse has been around for a few years now but the barrier to entry for building a Data Lakehouse can seem fairly high. In this blog post series, I will talk through the pros and cons of a Data Lakehouse and then step through …&lt;/p&gt;</summary><content type="html">&lt;h3 id="introduction"&gt;&lt;a class="toclink" href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The concept of a Data Lakehouse has been around for a few years now but the barrier to entry for building a Data Lakehouse can seem fairly high. In this blog post series, I will talk through the pros and cons of a Data Lakehouse and then step through how to stand a Data Lakehouse up and then finally how to maintain it.&lt;/p&gt;
&lt;p&gt;In this post, I am introducing what is Data Lakehouse, contrasting it against a Data Lake and a Cloud Data Warehouse, and then talking about pros and cons. In Part 2 I will dive into setting up a Data Lakehouse using AWS Athena, Apache Iceberg, and dbt. In Part 3, I will dig into tasks around how to maintain a Data Lakehouse in order to maintain costs and performance.&lt;/p&gt;
&lt;h3 id="what-is-a-data-lakehouse"&gt;&lt;a class="toclink" href="#what-is-a-data-lakehouse"&gt;What is a Data Lakehouse?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A Data Lakehouse is effectively Data Lake except that it uses an Open Table Format (such as Apache Iceberg, Hudi, or Delta Lake) which allows you to perform &lt;a href="https://en.wikipedia.org/wiki/Create,_read,_update_and_delete"&gt;CRUD (Create, Read, Update, Delete)&lt;/a&gt; operations with &lt;a href="https://en.wikipedia.org/wiki/ACID"&gt;ACID (Atomicity, Consistency, Isolation, and Durability)&lt;/a&gt; transactions within a Data Lake. Prior to Open Table Formats, in a Data Lake it was only possible to work within the context of partitions where you could append to an existing partition, overwrite the whole partition, or delete it. If you wanted to perform CRUD operations at the row level, you had to use a Cloud Data Warehouse which in the context of AWS, is most commonly AWS Redshift or Snowflake. However, with Open Table Formats like Apache Iceberg, you can now use any popular computing framework such as Trino and Spark via AWS EMR or AWS Athena to perform CRUD operations with ACID transactions directly in the Data Lake(house).&lt;/p&gt;
&lt;h3 id="data-lakehouse-vs-cloud-data-warehouse"&gt;&lt;a class="toclink" href="#data-lakehouse-vs-cloud-data-warehouse"&gt;Data Lakehouse vs Cloud Data Warehouse&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;First, I would like to say it is entirely possible for an organization to use both a Data Lakehouse in combination with a Cloud Data Warehouse. One possible scenario is to have a Data Platform team that manages a Data Lakehouse where an organization’s data is centralized and then smaller Data Analytic or Science teams can then use a Cloud Data Warehouse such as Snowflake or AWS Redshift to read in the data they need for building data products.&lt;/p&gt;
&lt;h4 id="where-a-data-lakehouse-excels"&gt;&lt;a class="toclink" href="#where-a-data-lakehouse-excels"&gt;Where a Data Lakehouse Excels&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id="storage-costs"&gt;&lt;a class="toclink" href="#storage-costs"&gt;Storage Costs&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Even though Cloud Data Warehouses have made great efforts to reduce the cost of storing data, they are still much more expensive than S3 especially considering the different storage tiers that AWS S3 provides.&lt;/p&gt;
&lt;h5 id="bring-your-own-compute-framework"&gt;&lt;a class="toclink" href="#bring-your-own-compute-framework"&gt;Bring your own Compute Framework&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Any group can choose the compute framework to use such as Spark or Trino via AWS EMR, AWS Athena, or even a Cloud Data Warehouse to pull data from a Data Lakehouse. Outside of the S3 API get requests (which I will discuss later how to minimize), the bulk of the cost is on the data consumer in whatever compute solution they decide to use.&lt;/p&gt;
&lt;h5 id="data-governance-and-access"&gt;&lt;a class="toclink" href="#data-governance-and-access"&gt;Data Governance and Access&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Data Governance tools like AWS Lake Formation have come a long way in streamlining granting fine grained access (both column and row level) to datasets in a Data Lakehouse.&lt;/p&gt;
&lt;h4 id="challenges-of-a-data-lakehouse"&gt;&lt;a class="toclink" href="#challenges-of-a-data-lakehouse"&gt;Challenges of a Data Lakehouse&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id="complexity"&gt;&lt;a class="toclink" href="#complexity"&gt;Complexity&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;A Data Lakehouse just like a Data Lake, is much more complex to build and maintain than a Cloud Data Warehouse. First, it requires using a metastore like the AWS Glue Data Catalog to manage the metadata about the files and partitions stored within AWS S3.  Then, to interact with a Data Lakehouse, you have to bring your own compute framework such as Spark, Trino, AWS Athena, or even a Cloud Data Warehouse to access or modify the data.&lt;/p&gt;
&lt;h5 id="regular-maintenance"&gt;&lt;a class="toclink" href="#regular-maintenance"&gt;Regular Maintenance&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Regular maintenance operations are required in order to manage cost and performance. In most Cloud Data Warehouses, maintenance operations are are either handled behind the scenes or are at least very streamlined.&lt;/p&gt;
&lt;h3 id="there-is-always-a-tradeoff"&gt;&lt;a class="toclink" href="#there-is-always-a-tradeoff"&gt;There is always a tradeoff&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Like all things in the world of data, the trade off between a Data Lakehouse and Cloud Data Warehouse is that while a Data Lakehouse is cheaper to run (if well maintained), it requires specific sets of skills to stand up and operate versus a Cloud Data Warehouse which may carry a larger upfront cost but is easier to stand up, operate, and maintain.&lt;/p&gt;
&lt;h3 id="stay-tuned"&gt;&lt;a class="toclink" href="#stay-tuned"&gt;Stay tuned!&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In my next post, I will be talking through tools you can use to stand up your first Data Lakehouse! These tools will include the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://aws-sdk-pandas.readthedocs.io/en/stable/#"&gt;awswrangler aka AWS SDK for Pandas&lt;/a&gt;: This is a handy python package built and maintained by the AWS Professional Services team that makes building solutions in AWS much easier.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dbt-labs/dbt-adapters/tree/main/dbt-athena"&gt;dbt-athena&lt;/a&gt;: This is the dbt adapter for AWS Athena that makes doing transformations with Athena and Iceberg much more streamlined.&lt;/li&gt;
&lt;li&gt;AWS Services: &lt;a href="https://aws.amazon.com/athena/"&gt;Athena&lt;/a&gt;, &lt;a href="https://aws.amazon.com/glue/"&gt;Glue&lt;/a&gt;, &lt;a href="https://aws.amazon.com/s3/"&gt;S3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iceberg.apache.org/"&gt;Apache Iceberg&lt;/a&gt;: In the AWS ecosystem, Apache Iceberg has come out on top as one of the better supported Open Table Formats over Hudi and Delta Lake.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note: The scope of this blog post series will not include how to run this in production as it could be its won blog post series. Popular solutions include using &lt;a href="https://dagster.io/"&gt;Dagster&lt;/a&gt;, &lt;a href="https://airflow.apache.org/"&gt;Airflow&lt;/a&gt; with &lt;a href="https://www.astronomer.io/docs/learn/airflow-dbt/"&gt;Cosmos&lt;/a&gt;, or &lt;a href="https://aws.amazon.com/step-functions/"&gt;AWS Step Functions&lt;/a&gt; with &lt;a href="https://aws.amazon.com/ecs/"&gt;ECS Fargate Tasks&lt;/a&gt;.&lt;/p&gt;</content><category term="posts"/></entry><entry><title>HubSpot for Job Hunting</title><link href="https://www.alex-antonison.com/posts/hubspot-for-job-hunting/" rel="alternate"/><published>2023-06-02T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2023-06-02:/posts/hubspot-for-job-hunting/</id><summary type="html">&lt;h2 id="the-problem"&gt;&lt;a class="toclink" href="#the-problem"&gt;The Problem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When I initially posted to LinkedIn that I was looking for my next job opportunity, I was a bit overwhelmed with the amount of responses I received. I feel very fortunate to have an amazing network of colleagues that reached out to see how they could help. However …&lt;/p&gt;</summary><content type="html">&lt;h2 id="the-problem"&gt;&lt;a class="toclink" href="#the-problem"&gt;The Problem&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When I initially posted to LinkedIn that I was looking for my next job opportunity, I was a bit overwhelmed with the amount of responses I received. I feel very fortunate to have an amazing network of colleagues that reached out to see how they could help. However, I quickly realized I needed to start tracking conversations, recommended companies and job applications. My first idea was to spin up a Google Sheet that included a Contacts, Companies, Job Applications, and Activities tab.&lt;/p&gt;
&lt;p&gt;As I started to fill this out, I quickly identified a handful of issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This was going to be &lt;strong&gt;very&lt;/strong&gt; manual&lt;/li&gt;
&lt;li&gt;Typos would be the end of me&lt;/li&gt;
&lt;li&gt;I would have to use something like Google Data Studio to combine information across tabs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="a-more-automated-approach"&gt;&lt;a class="toclink" href="#a-more-automated-approach"&gt;A More Automated Approach&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As I was looking at how I had organized my Job Hunting Google Sheet, I realized this looked very familiar with how I have worked with data out of CRM's like Salesforce and HubSpot. After some quick googling, I found this blog post by HubSpot &lt;a href="https://blog.hubspot.com/customers/job-search-in-hubspot-crm" target="_blank"&gt;How to Organize Your Job Hunt in HubSpot CRM&lt;/a&gt; and it inspired me give it a shot.&lt;/p&gt;
&lt;h2 id="getting-hubspot-setup-for-job-hunting"&gt;&lt;a class="toclink" href="#getting-hubspot-setup-for-job-hunting"&gt;Getting HubSpot setup for Job Hunting&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="setting-up-companies"&gt;&lt;a class="toclink" href="#setting-up-companies"&gt;Setting up Companies&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The first thing I did was to go into HubSpot and customized the entry forms and table views for Companies and Contacts to line up with the kind of information I wanted to capture. One of the first parts of HubSpot I really liked was when adding a company, all I had to do was input the companies website and HubSpot would automatically pull in information about the company such as industry, employee size, etc. Once I had a company added, I could go in and add people to that company to establish a relationship between people I was talking with and the companies they worked at.&lt;/p&gt;
&lt;p&gt;&lt;img alt="This is what my company view looks like with the fake company I set up for testing purposes." src="/images/hubspot-companies-example.png"&gt;&lt;/p&gt;
&lt;p&gt;One more involved adjustment I wanted to make was to give myself a way of specifying a Type of company. By default, HubSpot &lt;code&gt;Company.Type&lt;/code&gt; was tailored more towards sales but fortunately, you can go into their data model and customize various elements. You can accomplish this by going to Profile &amp;amp; Preferences &amp;gt; Data Management &amp;gt; Objects &amp;gt; Companies. From there, I changed Type to be Startup, Consulting, Recruitment, Company, and University.&lt;/p&gt;
&lt;p&gt;&lt;img alt="This is the custom Company Type field dropbox I created" src="/images/hubspot-company-type-dropdown.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="You get to Company &amp;gt; Type Edit property via Profile &amp;amp; Preferences &amp;gt; Data Management &amp;gt; Objects &amp;gt; Companies" src="/images/hubspot-company-field-properties.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Once in the Type Object, you can customize the Types" src="/images/hubspot-company-type-edit.png"&gt;&lt;/p&gt;
&lt;h3 id="setting-up-contacts"&gt;&lt;a class="toclink" href="#setting-up-contacts"&gt;Setting up Contacts&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;For Contacts, I took the approach of keeping it as simple as possible so I cut down the input form quite a bit. While they had a field for Twitter, HubSpot did not include one for LinkedIn. I thought it would be helpful to look at people's LinkedIn's prior to a call or in person meeting, so I co-opted the Website URL field to be used for people's LinkedIn URL.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Contact Entry Form" src="/images/hubspot-contact-entry-form.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="This is what my contacts view looks like. I recommend adding yourself as a contact as you can try things out like e-mail, scheduling, etc." src="/images/hubspot-contacts-example.png"&gt;&lt;/p&gt;
&lt;p&gt;One feature that has been helpful for me is a built-in data quality feature for HubSpot where it will call out if you have already added someone with their e-mail as a contact.&lt;/p&gt;
&lt;p&gt;&lt;img alt="HubSpot Identifies Contacts with duplicate e-mails" src="/images/hubspot-contact-data-quality.png"&gt;&lt;/p&gt;
&lt;h3 id="setting-up-job-applications-aka-deals"&gt;&lt;a class="toclink" href="#setting-up-job-applications-aka-deals"&gt;Setting up Job Applications (aka Deals)&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With all of my companies and contacts added, I then set up Deals as Job Applications. For this, I went into the Profile &amp;amp; Preferences &amp;gt; Data Management &amp;gt; Objects &amp;gt; Deals and changed the Pipelines to map to the different parts of the application process.&lt;/p&gt;
&lt;p&gt;&lt;img alt="My initial pass at setting up the different stages of a job application process." src="/images/hubspot-deals-to-job-applications.png"&gt;&lt;/p&gt;
&lt;p&gt;With that setup, I then tailored down the Deal submit form to be short so it would be quick add Job Applications. Also, I can tie those job applications to people and/or companies. In the Deal Description section, I put the Job's URL so I can quickly bring up the information about the job.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Job Application/Deal Entry Form" src="/images/hubspot-submit-job-application.png"&gt;&lt;/p&gt;
&lt;p&gt;Since I can connect both a Company and Contacts to a Deal, in my Deal's view I can see what job applications where I have had recently activity with the target company. I also included an "Amount" column that will be populated in the event I receive an offer from a company.&lt;/p&gt;
&lt;p&gt;&lt;img alt="This is what my HubSpot Deals view looks like" src="/images/hubspot-deals-view.png"&gt;&lt;/p&gt;
&lt;h2 id="using-hubspot"&gt;&lt;a class="toclink" href="#using-hubspot"&gt;Using HubSpot&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Now that I have Companies, Contacts, and Job Applications set up, my workflow for using HubSpot involves logging e-mails, calls, and meetings with a Contact.&lt;/p&gt;
&lt;p&gt;&lt;img alt="My example contact showing what you can capture" src="/images/hubspot-contact-activities.png"&gt;&lt;/p&gt;
&lt;p&gt;When you log anything, there is an option at the bottom to set up a "Follow up task" with either a default or custom follow up date. I have to say this is easily one of my favorite features since it streamlines setting up reminders to follow up.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Example logging an activity" src="/images/hubspot-logging-an-email.png"&gt;&lt;/p&gt;
&lt;h2 id="other-interesting-features"&gt;&lt;a class="toclink" href="#other-interesting-features"&gt;Other Interesting Features&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;After it only took a few hours to get Companies, Contacts, and Job Applications setup, I decided to explore some other features of HubSpot's free tier that could be helpful in automating other aspects of my job hunt.&lt;/p&gt;
&lt;h3 id="free-meeting-scheduler"&gt;&lt;a class="toclink" href="#free-meeting-scheduler"&gt;Free Meeting Scheduler&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you are open to connecting your Google e-mail to your HubSpot platform, &lt;a href="https://www.hubspot.com/products/sales/schedule-meeting" target="_blank"&gt;HubSpot has a  free meeting scheduler&lt;/a&gt; that can connect directly with your Google Calendar to streamline people scheduling time with you.&lt;/p&gt;
&lt;h3 id="sending-e-mails-from-hubspot"&gt;&lt;a class="toclink" href="#sending-e-mails-from-hubspot"&gt;Sending E-mails from HubSpot&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To help connect e-mail conversations with people you are networking with to potential job opportunities, you can use &lt;a href="https://knowledge.hubspot.com/email/send-and-reply-to-one-to-one-emails" target="_blank"&gt;HubSpot to send one-on-one e-mails to a contact&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="feel-free-to-reach-out"&gt;&lt;a class="toclink" href="#feel-free-to-reach-out"&gt;Feel free to reach out&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I hope other people can find HubSpot to be as helpful as I have in their job hunt! If you have any questions or betters ideas on how I could improve this, please feel free to reach out!&lt;/p&gt;</content><category term="posts"/></entry><entry><title>The Process of Data</title><link href="https://www.alex-antonison.com/posts/the-process-of-data/" rel="alternate"/><published>2023-04-24T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2023-04-24:/posts/the-process-of-data/</id><summary type="html">&lt;p&gt;Do you have complex processes that you are struggling to streamline or automate? If so, my recommended approach has some key benefits:&lt;/p&gt;
&lt;p&gt;⭐ Shorter timelines for improving an overall process&lt;/p&gt;
&lt;p&gt;⭐ Faster ROI when investing in technology&lt;/p&gt;
&lt;p&gt;⭐ Purpose built tools that are less expensive and easier to use&lt;/p&gt;
&lt;p&gt;⭐ Improved data quality&lt;/p&gt;
&lt;p&gt;⭐ Improved …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Do you have complex processes that you are struggling to streamline or automate? If so, my recommended approach has some key benefits:&lt;/p&gt;
&lt;p&gt;⭐ Shorter timelines for improving an overall process&lt;/p&gt;
&lt;p&gt;⭐ Faster ROI when investing in technology&lt;/p&gt;
&lt;p&gt;⭐ Purpose built tools that are less expensive and easier to use&lt;/p&gt;
&lt;p&gt;⭐ Improved data quality&lt;/p&gt;
&lt;p&gt;⭐ Improved data accessibility and ease of use&lt;/p&gt;
&lt;p&gt;🙈 Problem: Building tools or platforms that streamline an entire or multiple parts of a process can be complex to build, complex to use, and expensive. This can also prevent you from being able to use existing purpose built tools since any one tool may only be able to streamline a portion of your process. 🙈&lt;/p&gt;
&lt;p&gt;💡 My recommended steps are: 💡 &lt;/p&gt;
&lt;p&gt;1️⃣ Document the whole process.
This could include an overall process flow along with procedural steps for each part. This step is the most important since it is challenging to streamline an undocumented process.&lt;/p&gt;
&lt;p&gt;2️⃣ Break the process down into separate parts.
When a process is broken down into separate parts, it allows for less complex solutions to be used to automate it versus attempting to streamline an entire process with one tool.&lt;/p&gt;
&lt;p&gt;3️⃣ Identify one part of the process that is the most important and/or time consuming.
Rarely are all parts in a process made equal. Usually there are a handful of parts that are either crucial to success and/or time consuming.&lt;/p&gt;
&lt;p&gt;4️⃣ Automate or Streamline
Automate or streamline the part of the process identified in 3️⃣. This could involve using an existing tool or building a new tool. ⚠ If a tool needs to be built, it is important to keep in mind this new tool is only meant to solve a single part of the overall process. ⚠&lt;/p&gt;
&lt;p&gt;5️⃣ Iterate. Start back over at 1️⃣
Once you have automated or streamlined the most important and/or time consuming part of a process, it is helpful to go through the whole exercise again. This will help inform what worked, what didn’t work, and things to keep in mind when continuing to streamline a process.&lt;/p&gt;
&lt;p&gt;Some final notes:&lt;/p&gt;
&lt;p&gt;🗒 Key people that do the process should be involved. There are always nuances to a process that can be missed in documentation.&lt;/p&gt;
&lt;p&gt;🗒 It is helpful to try and keep an overall technology architecture in mind. Selecting tools that can't work with one another leads to data silos and forced manual parts of a process.&lt;/p&gt;
&lt;p&gt;🗒 Have a high level understanding of what an ideal end state/process looks like. This is helpful in thinking beyond the current process and can help inform technologies to use.&lt;/p&gt;</content><category term="posts"/></entry><entry><title>Tool Selection Framework</title><link href="https://www.alex-antonison.com/posts/tool-selection-framework/" rel="alternate"/><published>2023-03-01T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2023-03-01:/posts/tool-selection-framework/</id><summary type="html">&lt;h3 id="overview"&gt;&lt;a class="toclink" href="#overview"&gt;Overview&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The goal of the Data Tools Conceptual Framework is to highlight various tools that can be used to process and analyze data and data storytelling. While most tools can be used to accomplish a task, there are instances where some tools may be better suited to complete a given …&lt;/p&gt;</summary><content type="html">&lt;h3 id="overview"&gt;&lt;a class="toclink" href="#overview"&gt;Overview&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The goal of the Data Tools Conceptual Framework is to highlight various tools that can be used to process and analyze data and data storytelling. While most tools can be used to accomplish a task, there are instances where some tools may be better suited to complete a given project.&lt;/p&gt;
&lt;p&gt;To distill down a project down into something that can be evaluated, a project can be broken down into individual work units. A project will be evaluated based on the volume and complexity of work units. For projects that have either a combination of complex work units or a large volume of work units will notably impact the type of tools that would be better suited.&lt;/p&gt;
&lt;p&gt;The key metrics that will be used when evaluating data tools will be the learning curve and how productive a person can be with a tool. While some tools may have a lower learning curve making them easier to pick up, if a project is large and/or complex, a tool that allows a person to be more productive could allow for the project to be done faster and with higher quality.&lt;/p&gt;
&lt;h3 id="defining-a-project"&gt;&lt;a class="toclink" href="#defining-a-project"&gt;Defining a Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A project consists of one or many work units. A work unit is a loose concept meant to represent the steps taken to complete a part of a project. When evaluating work units, it is important to keep in mind the volume and complexity of work units for a project.&lt;/p&gt;
&lt;h4 id="complexity"&gt;&lt;a class="toclink" href="#complexity"&gt;Complexity&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The complexity of a work unit is a function of how many steps there are in a single work unit as well as if there are nuances in a work unit based on the input. Work units that have higher complexity will result in each individual unit taking longer to complete and increasing the opportunity for human error.&lt;/p&gt;
&lt;h4 id="volume"&gt;&lt;a class="toclink" href="#volume"&gt;Volume&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The volume of work units in a project is how many items need to be processed. This could range from either working with a single data file downloaded from a data platform or having to process three hundred sensor data files. Volume is important to keep in mind since even for projects where the individual work complexity is low, if there is a significant volume of units it could lead to the overall project taking a long time and increasing the likelihood of errors.&lt;/p&gt;
&lt;h3 id="data-tool-metrics"&gt;&lt;a class="toclink" href="#data-tool-metrics"&gt;Data Tool Metrics&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When looking at data tools, a comparison will be made between the learning curve of the tool and how productive a person can be with that tool.&lt;/p&gt;
&lt;h4 id="learning-curve"&gt;&lt;a class="toclink" href="#learning-curve"&gt;Learning Curve&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The learning curve represents how long it will take to initially learn the tool.&lt;/p&gt;
&lt;p&gt;For scoring, a high score represents a lower learning curve, and a low score represents a higher learning curve.&lt;/p&gt;
&lt;h4 id="productivity"&gt;&lt;a class="toclink" href="#productivity"&gt;Productivity&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Productivity is determined by how efficiently a person can complete an individual work unit. This is important since there could be instances where a person may have a large volume of work units for a given project or they may have to repeat a work unit because either an error was discovered or a step was missed.&lt;/p&gt;
&lt;p&gt;For scoring, a high score represents a tool that allows a person to be very productive with the tool versus a low score meaning the tool is more manual.&lt;/p&gt;
&lt;h3 id="data-tools"&gt;&lt;a class="toclink" href="#data-tools"&gt;Data Tools&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Data Tools will be evaluated from the following categories: Spreadsheet, Programming Language, and Data Storytelling. An overview will be provided for where the tool excels and struggles in relation to the score.&lt;/p&gt;
&lt;h4 id="spreadsheet"&gt;&lt;a class="toclink" href="#spreadsheet"&gt;Spreadsheet&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id="overview_1"&gt;&lt;a class="toclink" href="#overview_1"&gt;Overview&lt;/a&gt;&lt;/h5&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Learning Curve&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Excel and Google Sheets are both good examples of a spreadsheet tool. What is great about Excel and Google Sheets is that both have a low learning curve to get started and over the years have added many features that make it easy to go from structured data to insights. This could involve creating a pivot table that allows for easily aggregating and summarizing data to creating a variety of pre-baked charts that allow for a decent amount of customization.&lt;/p&gt;
&lt;p&gt;However, with the lower learning curve also comes with low Productivity. Since spreadsheet tools only allow manual input, each work unit must be done manually. This can become an issue with projects that have a large amount of work units or if a project has work units with high complexity.&lt;/p&gt;
&lt;p&gt;One caveat is that there is the ability to write macros in a spreadsheet tool to enhance the functionality but at that point, it would be more beneficial to take a step back to evaluate whether a Data Preparation Tool or Programming Language would be better suited for the project.&lt;/p&gt;
&lt;h5 id="capabilities"&gt;&lt;a class="toclink" href="#capabilities"&gt;Capabilities&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Data Preparation&lt;/li&gt;
&lt;li&gt;Data Storytelling&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="ideal-project"&gt;&lt;a class="toclink" href="#ideal-project"&gt;Ideal Project&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Where Excel and Google Sheets excel are when you have a project that has a low volume of work units, and the complexity of the work units is low. In this scenario, the amount of time it takes to complete the project is low and additional time can be spent ensuring the quality of the project.&lt;/p&gt;
&lt;h5 id="cost-and-availability"&gt;&lt;a class="toclink" href="#cost-and-availability"&gt;Cost and Availability&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Where Google Sheets is free with a Google Account, Microsoft Excel has to be purchased if you are not in a setting where you are working at a company or are in school where Excel is provided. Additionally, Microsoft Excel works best on a Windows PC where Google Sheets is browser based and works in any operating System.&lt;/p&gt;
&lt;h4 id="data-visualization-tools"&gt;&lt;a class="toclink" href="#data-visualization-tools"&gt;Data Visualization Tools&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id="overview_2"&gt;&lt;a class="toclink" href="#overview_2"&gt;Overview&lt;/a&gt;&lt;/h5&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Learning Curve&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Data Visualization Tools such as Tableau, Juicebox, and PowerBI allow for creating Data Visualizations with structured and cleansed data. Data Visualization Tool's will allow for being more productive than using a Spreadsheet tool because of the additional features.&lt;/p&gt;
&lt;h5 id="capabilities_1"&gt;&lt;a class="toclink" href="#capabilities_1"&gt;Capabilities&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Data Visualization&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="ideal-project_1"&gt;&lt;a class="toclink" href="#ideal-project_1"&gt;Ideal Project&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Data Visualization tools will excel at instances where there is a project where data has already been prepared. This will work better with low work units and lower complexity. However, because it has more features, it allows for some additional complexity. Will still struggle with higher volume of work.&lt;/p&gt;
&lt;h5 id="cost-and-availability_1"&gt;&lt;a class="toclink" href="#cost-and-availability_1"&gt;Cost and Availability&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Data Storytelling Tools must be purchased. This makes them more costly and less accessible.&lt;/p&gt;
&lt;h4 id="programming-language"&gt;&lt;a class="toclink" href="#programming-language"&gt;Programming Language&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id="overview_3"&gt;&lt;a class="toclink" href="#overview_3"&gt;Overview&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Where Programming Languages like R and Python have the greatest learning curve, they also allow for a person to be the most productive and makes it easier to produce higher quality end products. Additionally, as R and Python are both open source, that makes them free and very accessible.&lt;/p&gt;
&lt;p&gt;One of the greatest challenges to getting started with R and Python has been setting them up on a computer. However, there are free offerings for both R and Python allowing for them to be run in a browser without the need for setting up a personal computer.&lt;/p&gt;
&lt;h5 id="capabilities_2"&gt;&lt;a class="toclink" href="#capabilities_2"&gt;Capabilities&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Data Preparation&lt;/li&gt;
&lt;li&gt;Data Visualization&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id="ideal-project_2"&gt;&lt;a class="toclink" href="#ideal-project_2"&gt;Ideal Project&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Programming Languages have packages that support a wide variety of project types. However, taking into consideration the learning curve and the amount of time it takes to set up a project, an ideal projects for Programming Languages are ones that require reproducibility, processing a large amount of items, and have complex steps.&lt;/p&gt;
&lt;h5 id="cost-and-accessibility"&gt;&lt;a class="toclink" href="#cost-and-accessibility"&gt;Cost and Accessibility&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;There is no cost to using R and Python. It is accessible for anyone to use that has access to a computer with internet.&lt;/p&gt;
&lt;h5 id="overall-scoring"&gt;&lt;a class="toclink" href="#overall-scoring"&gt;Overall Scoring&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;Below is a list of scores for several types of tools.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool&lt;/td&gt;
&lt;td&gt;Learning Curve&lt;/td&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spreadsheet Tool (Excel, Google Sheets)&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Visualization (Tableau, Juicebox, PowerBI)&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programming Language (Python, R)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;For projects that have a low volume of work with low complexity, a Spreadsheet Tool will be sufficient. However, if either the complexity or volume of work is high, over the lifetime of a project it would be beneficial to explore using a combination of programming languages and data visualization tools.&lt;/p&gt;</content><category term="posts"/></entry><entry><title>Impactful Data &gt; Big Data</title><link href="https://www.alex-antonison.com/posts/impactful-data-over-big-data/" rel="alternate"/><published>2022-11-22T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2022-11-22:/posts/impactful-data-over-big-data/</id><summary type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In the world of data, data is categorized as either "big data" or just "data." This can be problematic since when an organization doesn't have "big data," more often than not they do not take time to automate processing their data nor take care in efficiently managing it. On …&lt;/p&gt;</summary><content type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In the world of data, data is categorized as either "big data" or just "data." This can be problematic since when an organization doesn't have "big data," more often than not they do not take time to automate processing their data nor take care in efficiently managing it. On the other hand, an organization may have what they consider "big data" and they spend a significant amount of effort and money managing it, even if there is no clear use-case. Because of this, I think the focus should shift from "big data" to "impactful data."&lt;/p&gt;
&lt;h3 id="what-is-data"&gt;&lt;a class="toclink" href="#what-is-data"&gt;What is data?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Before explaining what impactful data is, a quick definition about what is data. As a Data Engineer, to me data is a collection of values to represent a transaction, measurement, or an event along with information to provide context. An example of this could be data coming off sensors placed in a river. The sensor is set to collect measuremetns of pH, Temperature, and Dissolved Oxygen. Each measurement has a time stamp associated with it along with information about when and where the sensor was placed, when it was collected, quality check information about the sensor, etc. For a more detailed definition of data, &lt;a href="https://en.wikipedia.org/wiki/Data"&gt;Wikipedia&lt;/a&gt; has a good article around it.&lt;/p&gt;
&lt;h3 id="what-is-impactful-data"&gt;&lt;a class="toclink" href="#what-is-impactful-data"&gt;What is impactful data?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To simply put it, impactful data has a clear use-case that can help solve a problem and/or answer a question that will help inform a decision. This could range from being used to create a KPI metric dashboard, data collected in a scientific study, to data that can help drive Government policy. In the absence of a clear use-case, my recommendation would be to document the data and archive it in cheaper object storage, such as &lt;a href="https://aws.amazon.com/s3/"&gt;AWS S3&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="should-you-automate-processing-and-management-of-small-volumes-of-impactful-data"&gt;&lt;a class="toclink" href="#should-you-automate-processing-and-management-of-small-volumes-of-impactful-data"&gt;Should you automate processing and management of small volumes of impactful data?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Yes! Regardless of the volume of the impactful data, taking the time to streamline processing and managing the data can have a wide variety of benefits.&lt;/p&gt;
&lt;h4 id="automating-data-processing"&gt;&lt;a class="toclink" href="#automating-data-processing"&gt;Automating Data Processing&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Automating data processing reduces the time it takes to gain access to the data and insights from it. It also reduces the amount of potential human error when manually processing data. This could start as a simple Python or R script run locally. As the volume and frequency of data increases, this could evolve into building a Serverless Data Pipeline in AWS using services like &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt;, &lt;a href="https://aws.amazon.com/step-functions/"&gt;AWS Step Functions&lt;/a&gt;, and/or &lt;a href="https://aws.amazon.com/fargate/"&gt;AWS Fargate&lt;/a&gt;. Depending on situation, there are pros and cons between running locally and deploying a data pipeline in a cloud platform. Regardless of the implementation, automating data processing leads to faster access to the data and insights along with less human errors.&lt;/p&gt;
&lt;h4 id="data-management"&gt;&lt;a class="toclink" href="#data-management"&gt;Data Management&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;When does it make sense to build a data warehouse and marts? Well..."it depends." If you are pulling in data from multiple desperate sources that you need to normalize together into a single harmonized data model, then a data warehouse and curated data marts may be appropriate. If the data is coming from a single source, it may be sufficient to streamline processing it and serving the results up via a &lt;a href="https://aws.amazon.com/quicksight/"&gt;Quicksight Dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="when-does-volume-of-data-matter"&gt;&lt;a class="toclink" href="#when-does-volume-of-data-matter"&gt;When does volume of data matter?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There are some cases where the volume data will matter such as when evaluating a data platform architecture or exploring using Machine Learning to solve a problem.&lt;/p&gt;
&lt;h4 id="evaluating-data-platform-architecture"&gt;&lt;a class="toclink" href="#evaluating-data-platform-architecture"&gt;Evaluating Data Platform Architecture&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;When building a data platform, it is important to take into consideration the 3 V's of data (volume, velocity, and variety). This will inform the kinds of technologies a Data Engineer should consider using in order to ensure the data stack can handle the use-case.  An example being a data platform to manage terabytes of data, a Data Engineer should consider frameworks that support parallel computing such as Spark with AWS EMR versus if I am managing gigabytes of data where I could use something simpler to use such Lambda functions to process the data and AWS Athena to query the data.&lt;/p&gt;
&lt;h4 id="machine-learning-applications"&gt;&lt;a class="toclink" href="#machine-learning-applications"&gt;Machine Learning Applications&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;When Machine Learning came onto the scene, it brought with it the need for large volumes of data in order to have sufficient data to train an algorithm to perform a task such as image classification, natural language processing, etc. In these cases, the larger the training dataset, more often than not the better the trained algorithm will perform. This is of course assuming the training dataset is well suited for the problem to be solved but that would deserve it's own blog post.&lt;/p&gt;
&lt;h3 id="conclusion"&gt;&lt;a class="toclink" href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It is important to think critically about the actual value of a dataset over the perceived value. Also, any dataset that is considered valuable, there are numerous benefits to invest time and energy into automating the processing and management of the data. This will help improve data quality and ensure data is accessible in a timely manner.&lt;/p&gt;</content><category term="posts"/></entry><entry><title>venv is a Data Professional's Best Friend</title><link href="https://www.alex-antonison.com/posts/venv-is-a-data-professionals-best-friend/" rel="alternate"/><published>2021-02-06T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2021-02-06:/posts/venv-is-a-data-professionals-best-friend/</id><summary type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Have you ever tried to share a project with a colleague and they struggled to run it? Have you ever spent hours trying to get a machine learning library to work? If so, there are solutions out there that can help with this!  In this post, I will talk …&lt;/p&gt;</summary><content type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Have you ever tried to share a project with a colleague and they struggled to run it? Have you ever spent hours trying to get a machine learning library to work? If so, there are solutions out there that can help with this!  In this post, I will talk about a utility, virtual environments, that can be used to manage specific packages.&lt;/p&gt;
&lt;h3 id="venvrenv"&gt;&lt;a class="toclink" href="#venvrenv"&gt;venv/renv&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;When starting up a project, the first step I take is to spin up a virtual environment. In python, my personal favorite is the virtual environment utility built directly into python, &lt;a href="https://docs.python.org/3/tutorial/venv.html"&gt;python venv&lt;/a&gt;. In R, I like to use the package &lt;a href="https://rstudio.github.io/renv/"&gt;renv&lt;/a&gt; supported by RStudio. I do this for the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clean slate: When installing packages in a virtual environment, you can either use the latest versions of packages without worrying about impacting other projects or choose to use specific versions of packages.&lt;/li&gt;
&lt;li&gt;Collaboration: If I am working on a project with others, I can share the virtual environment configuration files, and they can spin up a virtual environment and run my code with the same packages.&lt;/li&gt;
&lt;li&gt;Reproducibility: When I set the project down and I want to pick it up at a later time, I can ensure I am using the same packages as when I first started the project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For python, you can run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/path/to/project
&lt;span class="c1"&gt;# creates the virtual environment&lt;/span&gt;
python&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;venv&lt;span class="w"&gt; &lt;/span&gt;venv
&lt;span class="c1"&gt;# activates the virtual environment in your terminal&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;venv/bin/activate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Once the environment is created and activated, you can then install all of the packages you need for your project and save them to a &lt;code&gt;requirements.txt&lt;/code&gt; file that should be included with your project when sharing.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip&lt;span class="w"&gt; &lt;/span&gt;freeze&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For R, you can run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# You must first install `renv`&lt;/span&gt;
Rscript&lt;span class="w"&gt; &lt;/span&gt;-e&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;install.packages(&amp;#39;renv&amp;#39;)&amp;quot;&lt;/span&gt;

&lt;span class="c1"&gt;# Once installed, you can then run&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/path/to/project
Rscript&lt;span class="w"&gt; &lt;/span&gt;-e&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;renv::init()&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Once set up and activated, you can start working on your project and install packages as needed. When you are ready to snapshot your environment, you can run the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Rscript&lt;span class="w"&gt; &lt;/span&gt;-e&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;renv::snapshot()&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This will update the &lt;code&gt;renv.lock&lt;/code&gt; file that should be used when sharing your code to allow setting up a new environment from it.  This is most easily used when working with R in a project in RStudio.&lt;/p&gt;
&lt;h3 id="limitations"&gt;&lt;a class="toclink" href="#limitations"&gt;Limitations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;While virtual environments are great at managing packages needed to run code, it is limited to just that.  There are other aspects of running a project such as application or operating system dependencies. To completely solve for reproducing the environment for running code, you can explore using &lt;a href="https://www.docker.com/"&gt;docker&lt;/a&gt;, a utility that will allow for capturing your entire environment which includes the Operating System and supporting applications.  There is a steeper learning curve to this, and I plan on dedicating entire post(s) to the topic of how docker is a more comprehensive solution to reproducibility.&lt;/p&gt;
&lt;h3 id="other-virtual-environment-tools"&gt;&lt;a class="toclink" href="#other-virtual-environment-tools"&gt;Other virtual environment tools&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;For python, &lt;a href="https://pipenv.pypa.io/en/latest/"&gt;pipenv&lt;/a&gt; and &lt;a href="https://python-poetry.org/"&gt;poetry&lt;/a&gt; are virtual environment utilities that allow for managing various versions of packages in a project.  You can manage packages ranging from selecting a specific version of a package to letting any version of that package be installed.  While these tools can be helpful in managing packages and package dependencies, they come with additional complexity and a learning curve.&lt;/p&gt;</content><category term="posts"/></entry><entry><title>What are the different roles in data?</title><link href="https://www.alex-antonison.com/posts/different-roles-in-data/" rel="alternate"/><published>2019-10-04T00:00:00+00:00</published><updated>2026-04-05T00:56:12.379986+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2019-10-04:/posts/different-roles-in-data/</id><summary type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The intended audience for this post are people interested in getting into data or businesses looking to use data to drive business value. With this in mind, I attempted to stay high level and provide enough information and key words for someone to find more in-depth resources on any …&lt;/p&gt;</summary><content type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The intended audience for this post are people interested in getting into data or businesses looking to use data to drive business value. With this in mind, I attempted to stay high level and provide enough information and key words for someone to find more in-depth resources on any given topic. Additionally, when highlighting skills, I focus on what I have observed being commonly used in industry based on experience, combing through job postings, and networking.&lt;/p&gt;
&lt;h3 id="working-in-data"&gt;&lt;a class="toclink" href="#working-in-data"&gt;Working in data&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In my experience, working in data can at times be a bit confusing and overwhelming because of the sheer breadth of skills and techniques that are needed to process, manage, and analyze data. In this post, I am going to group these sets of skills into different roles, highlight the order in which they should be built out in an organization, and emphasize the importance of only focusing on one role at a time. As someone who has done work in each of these areas, my effectiveness was significantly reduced when I had to wear multiple hats.The four roles I will be focusing on in this post are Data Analyst, Data Engineer, Data Scientist, and Machine Learning Engineer. While some of these roles can be broken down to be more specific, my goal of this blog post is to stay high level and emphasize broad concepts around each role. Additionally, there are other important roles such as Data Governance and Privacy and Data Curation which I will not be covering as this post is meant to be an introduction to a data team in an organization.&lt;/p&gt;
&lt;p&gt;And one last thing, although I do not advise trying to perform multiple roles at once, I think it can be beneficial if given the opportunity to try different roles and see what you enjoy most.&lt;/p&gt;
&lt;h3 id="the-different-roles"&gt;&lt;a class="toclink" href="#the-different-roles"&gt;The different roles&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img alt="Data team roles diagram" src="/images/data-organization-diagram.png"&gt;&lt;/p&gt;
&lt;h4 id="the-data-analyst-describes-data"&gt;&lt;a class="toclink" href="#the-data-analyst-describes-data"&gt;&lt;strong&gt;The Data Analyst - Describes Data&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In my opinion, the Data Analyst is at the heart of a data team. Their focus should be to describe data to help drive business value.&lt;/p&gt;
&lt;p&gt;A Data Analyst should be the first role a company should hire and the expectations should be for them to come in and work with stakeholders and leadership to understand a company's goals and business problems and how data can help drive value. Once a company's goals and business problems have been clearly defined, the Data Analyst should seek out data, wrangle it to make it &lt;code&gt;tidy&lt;/code&gt; (see &lt;a href="https://vita.had.co.nz/papers/tidy-data.pdf"&gt;Tidy Data&lt;/a&gt; by Hadley Wickham), and then deliver reports and/or dashboards to communicate the results. The Data Analyst is what I consider more of an operational role that helps a business measure key indicators to help understand the state of their business as well as make data driven decisions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Key areas:&lt;/em&gt; data wrangling - data exploration - business intelligence - building dashboards (Key Performance Indicators (KPI), Operational) using tools like &lt;a href="https://www.tableau.com/"&gt;Tableau&lt;/a&gt;, &lt;a href="https://powerbi.microsoft.com/en-us/"&gt;PowerBI&lt;/a&gt;, &lt;a href="https://looker.com/"&gt;Looker&lt;/a&gt; - building reports using tools like SQL Server Reporting Services (&lt;a href="https://docs.microsoft.com/en-us/sql/reporting-services/create-deploy-and-manage-mobile-and-paginated-reports?view=sql-server-2017"&gt;SSRS&lt;/a&gt;) - SQL - (optional but recommended) R or Python&lt;/p&gt;
&lt;h4 id="the-data-engineer-scales-data"&gt;&lt;a class="toclink" href="#the-data-engineer-scales-data"&gt;&lt;strong&gt;The Data Engineer - Scales Data&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The Data Engineer's role is to scale an organization's data ingestion and management.&lt;/p&gt;
&lt;p&gt;Once a company has a firm understanding of their goals and business problems where data can help drive value, a Data Engineer can come in scale and build upon existing data processes. By scale, I mean the &lt;a href="https://whatis.techtarget.com/definition/3Vs"&gt;3Vs of data&lt;/a&gt;(volume, variety, and velocity) and the ability to build automated data pipelines capable of bringing in data at the frequency a business needs to support applications, reports, dashboards, and analyses. Not only should a Data Engineer focus on &lt;a href="https://en.wikipedia.org/wiki/Extract,_transform,_load"&gt;Extract, transform, load (ETL)&lt;/a&gt; or &lt;a href="https://en.wikipedia.org/wiki/Extract,_load,_transform"&gt;Extract, load, transform (ELT)&lt;/a&gt;, they should also have a good understanding of how to build optimized data warehouses/marts/stores to be useful for end users. Lastly, a Data Engineer should understand the concept of building production code, and by that I mean it needs to work consistently and reliably. In the event of an inevitable failure, it needs to fail reliably and have adequate logging so the issue can be debugged and resolved as efficiently as possible.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Key Areas:&lt;/em&gt; concept of production code - optimized data warehousing/mart/store - &lt;a href="https://en.wikipedia.org/wiki/Extract,_transform,_load"&gt;Extract, transform, load (ETL)&lt;/a&gt; or &lt;a href="https://en.wikipedia.org/wiki/Extract,_load,_transform"&gt;Extract, load, transform (ELT)&lt;/a&gt; - data pipelines - automation - streaming data - web scraping - tools like &lt;a href="https://www.talend.com/"&gt;Talend&lt;/a&gt; or &lt;a href="https://www.informatica.com"&gt;Informatica&lt;/a&gt; - SQL - Python - docker&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;---------------------------------------------------------------&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Most companies can be highly successful doing Data Analytics and Engineering well. Without these two areas in place, a Data Scientist will be ineffective since they will simply be doing a combination of Data Analytics/Engineering. Often times this leads to mismatched skill sets and expectations on both the side of the organization as well as the Data Scientist.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;---------------------------------------------------------------&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id="the-data-scientist-models-data"&gt;&lt;a class="toclink" href="#the-data-scientist-models-data"&gt;&lt;strong&gt;The Data Scientist - Models Data&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The role of the Data Scientist is to use machine learning and statistical techniques to develop models of data capable of predictions or prescriptions.&lt;/p&gt;
&lt;p&gt;These models should have a focus on enhancing a business' existing processes or develop new products that are not as feasible without machine learning techniques. This is more of a strategic role where often times the goal is to build upon the existing Data Analytic work. Similar to that of a Data Analyst, a Data Scientist will need to do data exploration and visualization to gain a better understanding of the data. Additionally, they will need to interact with business stakeholders to gain a firm understanding of company goals and business problems to help guide what models can be built that can drive value.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Key Areas:&lt;/em&gt; feature engineering - statistical analysis - building / tuning / evaluating machine learning models - natural language processing - computer vision - R or Python - SQL&lt;/p&gt;
&lt;h4 id="the-machine-learning-engineer-scale-models"&gt;&lt;a class="toclink" href="#the-machine-learning-engineer-scale-models"&gt;&lt;strong&gt;The Machine Learning Engineer - Scale Models&lt;/strong&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;The role of the Machine Learning Engineer is to scale models by deploying and managing them in a production environment.&lt;/p&gt;
&lt;p&gt;A Machine Learning Engineer should work closely with the Data Science, Data Engineering, and Software Development teams to understand how a model needs to be deployed and build out necessary tools, APIs, or batch processes. Additionally, a Machine Learning Engineer needs to think about putting in place tools that will evaluate model performance and look for model drift to evaluate if a model needs to be retrained (great blog about this topic &lt;a href="https://mlinproduction.com/model-retraining/"&gt;The Ultimate Guide to Model Retraining&lt;/a&gt;). Like a Data Engineer, they need to have a concept of production code since once a model is deployed, it is often their responsibility to ensure predictions are not only being returned but that they meet the necessary expectations.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Key Areas:&lt;/em&gt; model drift - model retraining - the concept of production code - evaluation of models in production - machine learning - feature engineering - Python - SQL - docker - automation&lt;/p&gt;
&lt;h3 id="overall-suggestions-when-working-in-data"&gt;&lt;a class="toclink" href="#overall-suggestions-when-working-in-data"&gt;Overall Suggestions when working in Data&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Focus on the business problem&lt;/strong&gt; - When starting data projects, it is easy to get distracted by all of the different available technologies. However, it is important to first focus on solving the business problem at hand versus using current "state of the art" solutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be intentional with technology selection&lt;/strong&gt; - Whenever introducing a new piece of technology or programming language to a company, it is crucial to consider the consequences. Adding new technologies increases the overall complexity of a company's technology stack as well as often times reducing collaboration and consumption of work across teams.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source Control&lt;/strong&gt; - Regardless of role, I highly recommend all code (including SQL) is managed in a source control platform. By managing code through a source control platform, you can ensure code is accessible and changes to it over time can be tracked and managed. Depending on your team's maturity and needs, I suggest checking out either &lt;a href="https://trunkbaseddevelopment.com/"&gt;Trunk Based&lt;/a&gt; or a &lt;a href="https://nvie.com/posts/a-successful-git-branching-model/"&gt;Gitflow&lt;/a&gt; Development Strategy.&lt;ul&gt;
&lt;li&gt;Some popular source control platforms are &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt;, &lt;a href="https://about.gitlab.com/"&gt;GitLab&lt;/a&gt;, and &lt;a href="https://bitbucket.org/product"&gt;BitBucket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;In instances where Data Analysts or Data Scientists are doing analyses or ad-hoc requests, I recommend having a single repository where the code for these requests are stored and managed with loose processes around merging. This will help ensure the code is located in a more discoverable and central location. With that, a more restrictive repository(s) should be in place that requires reviews for managing code related to specific project work.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud computing&lt;/strong&gt; is becoming more common place when working with data in organizations. AWS, Microsoft Azure, and Google all offer free tiers that can allow you to get some hands on experience even if your organization does not use cloud computing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Package management&lt;/strong&gt; - With respect to R and Python, I suggest looking into utilities to manage packages to help with reproducibility.&lt;ul&gt;
&lt;li&gt;For R you I suggest using &lt;a href="https://github.com/rstudio/renv"&gt;renv&lt;/a&gt; over packrat as it is much more efficient at managing packages.&lt;/li&gt;
&lt;li&gt;For Python, I suggest using &lt;a href="https://docs.python.org/3/library/venv.html"&gt;venv&lt;/a&gt;. It is simple and I have never had issues using it yet.&lt;/li&gt;
&lt;li&gt;If you are new to Python, I also recommend checking out &lt;a href="https://www.anaconda.com/distribution/"&gt;Anaconda&lt;/a&gt;. However, I will admit my experiences with using it to manage and share environments has not been great. I only recommend Anaconda as it allows you to more easily get started in Python.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; - While managing packages is helpful, docker allows you to manage the entire environment of a script which ensures reproducibility. &lt;em&gt;Dev Ops people will love you.&lt;/em&gt;&lt;ul&gt;
&lt;li&gt;A good resource for doing this in R is &lt;a href="https://colinfay.me/docker-r-reproducibility/"&gt;An Introduction to Docker for R Users&lt;/a&gt; by Colin Fay&lt;/li&gt;
&lt;li&gt;A good resource for Python is &lt;a href="https://www.fullstackpython.com/docker.html"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="updates"&gt;&lt;a class="toclink" href="#updates"&gt;Updates&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id="2019-12-08"&gt;&lt;a class="toclink" href="#2019-12-08"&gt;2019-12-08&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;renv is now offered on cran, yay!&lt;/li&gt;
&lt;li&gt;Changed the method of suggest python environment management to being venv based on research and testing for consistently and reliably setting up and management environments in python.&lt;/li&gt;
&lt;/ul&gt;</content><category term="posts"/></entry><entry><title>Ethical use of algorithms with data</title><link href="https://www.alex-antonison.com/posts/ethical-use-algorithms-and-data/" rel="alternate"/><published>2019-03-09T00:00:00+00:00</published><updated>2026-04-05T00:56:12.380244+00:00</updated><author><name>Alex Antonison</name></author><id>tag:www.alex-antonison.com,2019-03-09:/posts/ethical-use-algorithms-and-data/</id><summary type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Before I talk about my views on ethics in the realm of Data Science, I first want to talk about how I got into Data Science.  I spent the first two years of my career doing some analysis accompanied by mostly Data Engineering before I knew it was Data …&lt;/p&gt;</summary><content type="html">&lt;h3 id="preface"&gt;&lt;a class="toclink" href="#preface"&gt;Preface&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Before I talk about my views on ethics in the realm of Data Science, I first want to talk about how I got into Data Science.  I spent the first two years of my career doing some analysis accompanied by mostly Data Engineering before I knew it was Data Engineering.  At this two year mark in 2014, I was at a point where I wanted to figure out where I wanted to take my career next.  After a bit of searching, I landed on the field of Data Science since it seemed like a perfect fit with my love of statistics and working with data.  Like with anything, my first approach was to search and try and find as much information on the topic as possible.  I took a few Coursera courses, followed &lt;em&gt;top data scientists on twitter&lt;/em&gt;, read blogs, and listened to podcasts.  More often than not, the topics were usually around applications of machine learning, interesting papers on machine learning models, or interviews with industry experts.  However, periodically there was a post or podcast that would catch my eye on a topic like "gender biased word embeddings." I quickly realized that although Data Science has the propensity for good, it also has a potential to harm individuals or entire communities.  I began actively searching for these issues and came upon a couple of good articles that covered a wide variety of issues such as &lt;a href="https://www.technologyreview.com/s/608248/biased-algorithms-are-everywhere-and-no-one-seems-to-care/"&gt;Biased Algorithms Are Everywhere, and No One Seems to Care&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, before I go any further, I would like to introduce two concepts that are at the center of this post.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Machine Learning:&lt;/strong&gt; "Machine learning algorithms build a mathematical model of sample data, known as "training data", in order to make predictions or decisions without being explicitly programmed to perform the task." - &lt;a href="https://en.wikipedia.org/wiki/Machine_learning"&gt;https://en.wikipedia.org/wiki/Machine_learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Algorithmic Bias:&lt;/strong&gt; "Algorithmic bias occurs when a computer system reflects the implicit values of the humans who are involved in coding, collecting, selecting, or using data to train the algorithm." - &lt;a href="https://en.wikipedia.org/wiki/Algorithmic_bias"&gt;https://en.wikipedia.org/wiki/Algorithmic_bias&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With that covered, I will move on to discuss a handful of cases where models are either biased, unethically created, or unethically used.&lt;/p&gt;
&lt;h3 id="gender-biased-word-embeddings"&gt;&lt;a class="toclink" href="#gender-biased-word-embeddings"&gt;Gender biased word embeddings&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Before I talk about how a &lt;a href="https://en.wikipedia.org/wiki/Word_embedding"&gt;word embedding&lt;/a&gt; can be gender biased, first I would like to discuss what is a word embedding.  A word embedding is a useful natural language processing tool where a model can represent the relationships between words as mathematical values to allow for associations such as "man:king" with "woman:queen" and "paris:france" with "tokyo:japan".  Cool, right? However, this bias has been extended to "man:programmer" with "woman:homemaker". Not cool.  A common model used is Word2Vec developed by Google back in 2013 trained on Google News texts.  Unfortunately, because the data this model was trained on was gender biased, so are the results.  But there is hope! Researchers have done work to both quantify the bias and come up with methods to "debias" the embeddings in &lt;a href="https://arxiv.org/abs/1607.06520"&gt;
Man is to Computer Programmer as Woman is to Homemaker? Debiasing Word Embeddings&lt;/a&gt;.  For more on this, I recommend &lt;a href="https://www.technologyreview.com/s/602025/how-vector-space-mathematics-reveals-the-hidden-sexism-in-language/"&gt;How Vector Space Mathematics Reveals the Hidden Sexism in Language&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mortgage-loan-interest-rate-bias"&gt;&lt;a class="toclink" href="#mortgage-loan-interest-rate-bias"&gt;Mortgage loan interest rate bias&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I find this to be a more traditional instance where financial institutions set out to use "big data" with "machine learning" to find ways to infer interest rates based on geography or characteristics of applicants.  This is referred to as "Algorithmic Strategic Pricing". A result of this, &lt;a href="http://faculty.haas.berkeley.edu/morse/research/papers/discrim.pdf"&gt;based on a study done by UC Berkly&lt;/a&gt;, African Americans and Latino borrowers pay more on purchase and refinance loans than White and Asian ethnicity borrowers. "The lenders may not be specifically targeting minorities in their pricing schemes, but by profiling non-shopping applicants they end up targeting them" said &lt;a href="http://faculty.haas.berkeley.edu/morse/"&gt;Adair Morse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information, you can check out &lt;a href="http://newsroom.haas.berkeley.edu/minority-homebuyers-face-widespread-statistical-lending-discrimination-study-finds/"&gt;Minority homebuyers face widespread statistical lending discrimination, study finds&lt;/a&gt; or the study itself &lt;a href="http://faculty.haas.berkeley.edu/morse/research/papers/discrim.pdf"&gt;Consumer-Lending Discrimination in the Era of FinTech&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="image-recognition-bias"&gt;&lt;a class="toclink" href="#image-recognition-bias"&gt;Image recognition bias&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Image recognition has become an everyday utility in society with many big tech companies using it in their product offerings like Google, Microsoft, and most notably, Facebook.  However, without any industry benchmarks to ensure that these facial recognition applications perform well on people of all races, genders, and age, there are instances where either the systems simply do not work or the systems are offensive.&lt;/p&gt;
&lt;p&gt;A more notable instance of  a facial recognition system failing to work was discovered by Joy Buolamwini, who is an African American PhD student at MIT's Center for Civic Media. At the time of her discovery, she was a Computer Science undergraduate at Georgia Tech.  In her undergrad, she was working on a research project to teach a computer to play "peek-a-boo" and found out that although the system had no issues recognizing her lighter skinned roommates, it had difficulty working with her.  Her solution to this was to wear a white Halloween mask which would then detect her as white. More on this can be found here &lt;a href="https://www.pbs.org/wgbh/nova/article/ai-bias/"&gt;Ghosts in the Machine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This issue is not limited to Joy Buolamwini's research, but could also be seen in Microsoft's Kinect for the X-box.  Back in 2010, it was observed that Microsoft's Kinect often times would not work on people with darker skin.  &lt;a href="https://www.pcworld.com/article/209708/Is_Microsoft_Kinect_Racist.html"&gt;Is Microsoft’s Kinect Racist?&lt;/a&gt;.  However, additionally worth noting is Microsoft advocating for there to be more regulation around image recognition in their blog post &lt;a href="https://blogs.microsoft.com/on-the-issues/2018/07/13/facial-recognition-technology-the-need-for-public-regulation-and-corporate-responsibility/"&gt;Facial recognition technology: The need for public regulation and corporate responsibility&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="microsoft-tay-twitter-bot"&gt;&lt;a class="toclink" href="#microsoft-tay-twitter-bot"&gt;Microsoft Tay twitter bot&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I like using Microsoft's Tay twitter bot as an example regarding ethics since it is an instance where the researchers themselves weren't being unethical, but failed to consider how their model could be interacted with and manipulated.  To provide a brief summary, Microsoft's Tay twitter bot was a research experiment conducted where they  built an artificial intelligence twitter bot that was supposed to learn how to mimic the speech of a 19 year old American girl by interacting with people on twitter.  However, what they failed to consider was a series of internet users  deciding to bombard the twitter bot with hateful speech.  The end result required Microsoft to turn the twitter bot off after 16 hours.&lt;/p&gt;
&lt;p&gt;This is an instance where although the researchers themselves were not being unethical, they failed to take into consideration how their twitter bot could be manipulated.  As we build products, it is important not only to think about what the purpose of the model is but how it could be used to harm other people.&lt;/p&gt;
&lt;h3 id="facebook-cambridge-analytica-scandal"&gt;&lt;a class="toclink" href="#facebook-cambridge-analytica-scandal"&gt;Facebook Cambridge Analytica scandal&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;An ethics blog post would be incomplete without mentioning the  &lt;a href="https://en.wikipedia.org/wiki/Facebook%E2%80%93Cambridge_Analytica_data_scandal"&gt;Facebook–Cambridge Analytica data scandal&lt;/a&gt;.  To briefly summarize, this is an instance where an organization used a survey app through Facebook to collect information from users for supposedly academic purposes.  However, through manipulating Facebook's app design, they were also able to collect the information of not only the users that agreed to the survey, but all of the users’ friends information as well.   Furthermore, instead of using this information for academic purposes, they used it for both the Ted Cruz and Donald Trump political campaigns.&lt;/p&gt;
&lt;p&gt;The two main takeaways here were that Cambridge Analytica both collected people's information without their consent and then used the information for purposes  beyond the consent given.  Needless to say, collecting people's information without their consent is clearly unethical.  However, even when  collecting people's personal information  ethically , it is  important  that measures are taken to ensure their information is protected and not misused.&lt;/p&gt;
&lt;h3 id="ways-to-improve"&gt;&lt;a class="toclink" href="#ways-to-improve"&gt;Ways to improve&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A few closing thoughts on ways the Data Science industry can improve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build teams of people from diverse backgrounds to ensure underrepresented communities are not negatively impacted by biased models.&lt;/li&gt;
&lt;li&gt;Audit algorithms AND  the data sets used to train models.&lt;/li&gt;
&lt;li&gt;Encourage companies to provide more information to users and researchers to help them better understand potential pitfalls and biases that may exist in their tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="additional-sources"&gt;&lt;a class="toclink" href="#additional-sources"&gt;Additional sources&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you are still interested in looking more into this topic, I highly recommend checking out the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Articles&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.technologyreview.com/s/610192/were-in-a-diversity-crisis-black-in-ais-founder-on-whats-poisoning-the-algorithms-in-our/"&gt;“We’re in a diversity crisis”: cofounder of Black in AI on what’s poisoning algorithms in our lives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.propublica.org/article/machine-bias-risk-assessments-in-criminal-sentencing"&gt;Machine bias risk assessments in criminal sentencing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Podcasts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dataskeptic.com/blog/episodes/2018/data-ethics"&gt;Data Skeptic - Data Ethics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lineardigressions.com/episodes/2018/12/30/facial-recognition-society-and-you"&gt;Linear Digressions - Facial recognition, society, and the law&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lineardigressions.com/episodes/2018/2/25/when-is-open-data-too-open"&gt;Linear Digressions - When is open data too open?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Books&lt;/li&gt;
&lt;li&gt;&lt;a href="https://weaponsofmathdestructionbook.com/"&gt;Weapons of Math Destruction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="posts"/></entry></feed>