teleren/devto huggingface dataset:
Day 98 Of 100DaysOfCode: Learning About Confusion Matrix
Tags: 100daysofcode, codenewbie, womenintech, wecoded
Published: 2021-04-06 16:25:57

Today, is my 98th day of #100daysofcode and #python learning journey. Today sometimes I learned more about [streamlit.](https://docs.streamlit.io/en/stable/getting_started.html) Like usual day today I also kept learning from DataCamp about the topic Cross validation and Confusion Matrix. 

While studying I learned that confusion matrix counts the number of instance when the model predicted the outcome of an event and measure it against the actual value. Similarly cross validation maximize the availability of training data by splitting data into various combination and testing each specific combination.
# Code for Confusion Matrix
```python
# Import necessary modules
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix

# Create training and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.4, random_state=42)

# Instantiate a k-NN classifier: knn
knn = KNeighborsClassifier(n_neighbors=6)

# Fit the classifier to the training data
knn.fit(X_train, y_train)

# Predict the labels of the test data: y_pred
y_pred = knn.predict(X_test)

# Generate the confusion matrix and classification report
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred)
```
Output of the codewill be
```python
[[176  30]
 [ 52  50]]
             precision    recall  f1-score   support

          0       0.77      0.85      0.81       206
          1       0.62      0.49      0.55       102

avg / total       0.72      0.73      0.72       308
```

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Day 98 Of <a href="https://twitter.com/hashtag/100daysofcode?src=hash&amp;ref_src=twsrc%5Etfw">#100daysofcode</a> and <a href="https://twitter.com/hashtag/python?src=hash&amp;ref_src=twsrc%5Etfw">#python</a> <br>Cross validation, Confusion matrix from DataCamp.<a href="https://twitter.com/hashtag/100DaysOfCode?src=hash&amp;ref_src=twsrc%5Etfw">#100DaysOfCode</a> <a href="https://twitter.com/hashtag/womenintech?src=hash&amp;ref_src=twsrc%5Etfw">#womenintech</a> <a href="https://twitter.com/hashtag/CodeNewbie?src=hash&amp;ref_src=twsrc%5Etfw">#CodeNewbie</a> <a href="https://twitter.com/hashtag/DEVCommunity?src=hash&amp;ref_src=twsrc%5Etfw">#DEVCommunity</a> <a href="https://t.co/Gb6jazDnb9">pic.twitter.com/Gb6jazDnb9</a></p>&mdash; Durga Pokharel (@durgacodes) <a href="https://twitter.com/durgacodes/status/1379464377611419656?ref_src=twsrc%5Etfw">April 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
How to Get Started With Flask
Tags: python, flask
Published: 2021-04-06 16:14:48

Python is a versatile and open-source programming language that can be used for a range of applications. With Flask, you can create a web app by writing Python code.

[Flask](https://flask.palletsprojects.com/) is a web framework that's easy to get started with and has powerful features and extensions. It's great to use for your next project because it's simple, unobtrusive, and extensible. The framework has been around for almost 8 years, and in that time it's evolved in a lot of ways.

## Why Flask?

Flask is used to develop websites of all sizes and has advantages over other frameworks including:

* Lightweight and [cool](https://pythonspot.com/flask-web-app-with-python/)
* Supports extensions - Flask has support for extension packages, which makes it easy to add functionality that you'll need for your application.
* Easy templating - Flask uses Jinja2 in its default [template](https://pythonbasics.org/flask-tutorial-templates/) engine.
* Full-stack - Flask includes support for unit testing and debugging, something that other frameworks usually require additional libraries to implement.
* API - Easy to build an [API](https://pythonprogramminglanguage.com/python-flask-rest-api/)
* Supports [cookies](https://python-commandments.org/flask-cookies/), [sessions](https://python-commandments.org/flask-session/) and other things you'd expect from a web framework

Flask is not intended to be a full-stack framework, it is intended to make development of web applications easier by providing simple modules which solve common problems.

Just like when we first started learning to drive, we don't want to deal with anything except putting the key in the ignition and pressing the gas pedal. 

Using Flask feels more like riding a bicycle or typing, less like learning to use an engine crane or shift registers.

If you are new to Flask, this is a [good starting course](https://gum.co/IMzBy)

## What does building a Flask app involve?

Building a web application with Flask involves:

1. Installing Flask and its dependencies
2. Importing the library
3. Defining a route
4. Defining a view function
5. Registering the view function with the router
6. (optional) Creating a WSGI application to serve the application
7. (optional but neat) Running the development server in debug mode
8. (optional) Configuring Gunicorn to serve the application

You can also just [deploy your app]( https://www.pythonanywhere.com/?affiliate_id=00535ced) online in a few clicks.
Become the true master of Python coding with a library of eBooks & support charity
Tags: python, ai, codenewbie
Published: 2021-04-06 16:14:10

**[Humble Book Bundle: The Ultimate Python Bookshelf by Packt](https://www.humblebundle.com/books/ultimate-python-bookshelf-packt-books?partner=indiekings)**

A bundle packed with Packt Python coding knowledge.

Get your hands on ebooks like Data Engineering with Python, Modern Python Cookbook, and Artificial Intelligence with Python.

Plus, your purchase helps support Doctors Without Borders & Stop AAPI Hate!
Connecting your RSS feed URL for easy publishing to dev.to
Tags: career
Published: 2021-04-06 16:00:43

*This is a spin off from Devocate's post, [Where Developers Blog](https://www.devocate.com/where-developers-blog/), to help show developers how to connect their blogs with Dev.to to easily cross post content.*

Connecting your blog to [Dev.to](https://dev.to/)
-------------------------------------------------

It's actually incredibly easy to do.

1.  Collect the RSS feed URL for your current blog. Depending on your platform, this may vary.
2.  Login to [dev.to](https://dev.to/settings/extensions) and navigate to Settings, then Extensions
3.  Scroll down to Publishing to DEV Community from RSS and paste your RSS URL in the RSS Feed URL field.

    ![Adding your RSS Feed URL](https://d2y5h3osumboay.cloudfront.net/31yas7jbpcy1ajiert5l8aw07l1b)

4.  Be sure to check to make your RSS source the canonical URL be default. The next box is entirely up to you---but if you're keeping your blog, I would suggest not checking it.
5.  Click Save Feed Settings
6.  Let [dev.to](https://dev.to/) work their magic for a few minutes, or a few hours, it varies overall. 
7.  Login back into [dev.to](https://dev.to/dashboard) and navigate to Dashboard under your account menu. 
8.  You should see a feed of posts in draft mode that came in from your blog.

    ![Imported Posts](https://d2y5h3osumboay.cloudfront.net/asd3cwre577b2p93j7obddqwabs1)

9.  Go through your posts and decide which ones make the cut for [dev.to](https://dev.to/)! Click Edit on the post you want to publish and make any appropriate tweaks. Be sure to change "false" to "true" when you are ready to publish!

    ![Edit & Publish](https://d2y5h3osumboay.cloudfront.net/u39f6vifpefnhp3y6vairbs47rup)

10. Click Save Changes. Your blog post is now live on [dev.to](https://dev.to/). 💥
Published is better than perfect
Tags: writing
Published: 2021-04-06 15:58:54

I'm kind of a perfectionist. I love to read a blog post that's been crafted and polished over weeks and weeks of work like [Paul Graham's essays](http://paulgraham.com/articles.html).

But I also have a super bad habit of not actually publishing anything. I have tons of drafts, thousands of notes, all of them are *just not good enough*. I'm afraid that people will make fun of my ideas or poke holes in them that if only I poured in a few more hours into them I could have made it all airtight.

However, when I was [watching a video](https://youtu.be/3i1lNJPY-4Q) about how a man learned Italian way faster than most people can. Most people get hung up in following ridged grammar rules but often end up years in not really being fluent.

What he decided to do instead was just learn the most common words of the language (the most useful ones) and just start stringing them together in the ways that most make sense to him. Sure he looks like a total "noob" to any native speaker but that's not the point. He didn't get hung up on hiding his talking till he was, "ready".

He made a good argument for this:

language is not like math. Math has right and wrong answers.

If my son says, "*I ated a Apple*" I'm **not** going to correct him. He said words and I understood them. That's all part of the expressive human experience.

Basically, so long as you can relay your message *clear enough* you're communicating!

I think the same applies to writing. You may not be good at it (I know I'm not) but if you're not sharing you're not learning.

Some people even use [publishing as a perfecting process](https://dev.to/swyx/blogpost-annealing-pod):

...*with an annealing policy will usually improve in quality after publication. More exposure = More "heat" = More quality.*

I really like this idea. Nothing is going to ever be perfect unless you **put it into the real world**. There's no shame in modifying your post after you post it! Once it's out there you'll be so much more motivated to fix the problems with it 🙃. This post had 10 grammar errors that I fixed a day after writing it.

So just freakin' write it and push **publish**.

Published is better than perfect.

- Gage

PS*: If it makes you feel any better just take any popular blogger and stick it into Grammarly, you'll see their post isn't perfect either* 😅*.*

Photo by <a href="https://unsplash.com/@bank_phrom?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Bank Phrom</a> on <a href="https://unsplash.com/s/photos/newspaper?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
PipeNet, Pipe lining in .Net
Tags: csharp, dotnet, webdev, productivity
Published: 2021-04-06 15:57:36

---
title: PipeNet, Pipe lining in .Net
published: true
description: Simplifying a complex logic with chain of responsibility  and builder patterns 
tags: csharp,dotnet,webdev,productivity
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5minovsr1qj252r8h2to.jpeg
---

Simplifying a complex logic with the Chain of responsibility  and builder patterns

> Install it from [Nuget](https://www.nuget.org/packages/PipeNet/)
> Check out the [Repository](https://github.com/alicommit-malp/PipeNet)

## Usage

```c#

OrderData result= await new Pipe<OrderData>()
    .Next(new OrderNode())
    .Next(new ProducingNode())
    .Finally(new CheckoutNode())
    .Execute(new OrderData()
    {
        Name = "Coffee"
    });


```

### Node 1 in the pipe
```c#
public class OrderNode : Node<OrderData>
{
    public override async Task<OrderData> Execute(OrderData param)
    {
        // Node 1's logic
        return await base.Execute(param);
    }
}
```

### Node 2 in the pipe
```c#
public class ProducingNode : Node<OrderData>
{
    public override async Task<OrderData> Execute(OrderData param)
    {
        // Node 2's logic
        return await base.Execute(param);
    }
}
```

### Node 3 in the pipe
```c#
public class CheckoutNode : Node<OrderData>
{
    public override async Task<OrderData> Execute(OrderData param)
    {
        // Node 3's logic
        return await base.Execute(param);
    }
}
```

### Benchmark Summary

|               Method |     Mean |   Error |   StdDev |  Gen 0 | Gen 1 | Gen 2 | Allocated |
|--------------------- |---------:|--------:|---------:|-------:|------:|------:|----------:|
|       WithPipeNet | 221.3 ns | 4.37 ns | 10.87 ns | 0.0713 |     - |     - |     448 B |
| RunWithoutPipeNet | 218.0 ns | 4.41 ns | 10.90 ns | 0.0892 |     - |     - |     560 B |

> Install it from [Nuget](https://www.nuget.org/packages/PipeNet/)
> Check out the [Repository](https://github.com/alicommit-malp/PipeNet)

Happy coding :)
Day~1 of #100DaysofCode
Published: 2021-04-06 15:57:05

*Hello Everyone,*

*Today is Day one of my #100DaysofCode Challenge, In these 100Days I am going to improve my Django skills and I will learn to react in these 100Days. In Django, I have started working on a new practice project, it's a note-taking app or you can say google-keeps rip-off 😂. Today I have made the template of the project from tomorrow I am going to start working on the backend.*


*
Talking about react Js, I am taking  [this](https://courses.learncodeonline.in/learn/home/Complete-ReactJS-developer-Bootcamp/section/78721/lesson/404446) course by Hitesh Choudhary, currently
I am on section 8, so today I have not learned anything new in react, today I have done one project from  [this](https://youtu.be/a_7Z7C_JCyo) video by freeCodeCamp.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9zzjaujgjjwldl0x153k.png)
Refactor your code using renaming Imports
Tags: typescript, javascript
Published: 2021-04-06 15:28:35

I'm working in refactor an Angular code and I need to have the same filenames meanwhile finish the refactor.

My solution was to rename my imports, it is a great way to use a different name or alias for my classes and modules.

For example, you can import a single class using the as keyword
```js
import {Player as NbaPlayer} from './nba'
```
Or import the full module using *
```js
import * as NbaLeage from './nba'
```
Then you can use your aliases in your application without problem.

Example:
```js
import { Player, Team }       from './nba';
import { Player as NbaPlayer} from './nba';
import * as NbaLeage          from './nba';

let lebron = new Player('Lebron', 'SF');
let carmelo = new NbaLeage.Player('Carmelo', 'SF');
let curry = new NbaPlayer('curry', 'PG');

let players : Array<NbaPlayer> = [ carmelo, curry, lebron];

players.forEach(player => console.log(player.name));
```
Have nice day!

Picture
https://unsplash.com/photos/yhNVwsKTSaI
Como testar watch do Vue.js usando Jest
Tags: javascript, vue, testing
Published: 2021-04-06 15:10:01

O **Vue.js** tem uma propriedade `watch` que serve para "observar" o valor de uma variável e ser executado sempre que esse valor for alterado.

Como essa propriedade serve para executar ações extras que não tenham alguma ligação a variável que dispara, existem alguns detalhes que devem ser seguidos para testar essa ação.

O componente exemplo para o teste é esse abaixo, tendo um data `text` que é usado no `v-model` do **input**
```html
<template>
  <div>
    <input v-model="text">
    <p>Impactou: {{ otherText }}</p>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      text: '',
      otherText: '',
    };
  },
  watch: {
    text(value) {
      this.otherText = value;
    },
  },
};
</script>
```

Para testar o `watch`, precisamos usar um código no estilo abaixo:
```js
  it('testing watch', async () => {
    const text = 'example value';
    const wrapper = shallowMount(App);
    const input = wrapper.find('input');

    expect(wrapper.vm.otherText).toBe('');

    input.element.value = text;
    input.trigger('input');
    await wrapper.vm.$nextTick();

    expect(wrapper.vm.otherText).toBe(text);
  });
```

### Explicando o código:

Primeiro montamos o componente e pegamos o elemento `input`.

A ideia para testar o `watch` é sempre pegarmos o valor inicial da variável, executar a ação que ocorrerá no componente, aquela que altera a variável "assistida" pelo watch, e então verificar se houve algum efeito na variável que deveria ser afetada.

Verificando o valor antes:
`expect(wrapper.vm.otherText).toBe('');`

Executando a ação:
`input.trigger('input');`

Verificando o valor depois:
`expect(wrapper.vm.otherText).toBe(text);`

Como o ideal é testar um comportamento mais próximo do real, evite testar algo alterando o valor direto na instância do componente, como `wrapper.vm.text = 'value'`. Por isso aqui, inserimos um valor ao input e emitimos o evento `input`.

#### Detalhe
> Caso o seu `watch` venha a verificar se um valor alterado volte ao valor padrão, será necessário executar a ação mais de uma vez, já que se você executar uma ação passando o valor igual ao valor anterior, o `watch` não é disparado.

_Photo by [Yassin Mohammadi](https://unsplash.com/@yassimmo?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText) on [Unsplash](https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText)_
sh: 1: ng: not found
Tags: devops, docker, centos, angular
Published: 2021-04-06 15:04:14

[root@username angular]# docker build -t angular .
Sending build context to Docker daemon  189.4kB
Step 1/8 : FROM node:latest AS builder
 ---> 998feddbb588
Step 2/8 : EXPOSE 4200
 ---> Using cache
 ---> ed3014c0982f
Step 3/8 : WORKDIR /angular
 ---> Using cache
 ---> b5b5d661d96b
Step 4/8 : COPY . .
 ---> Using cache
 ---> c50bb57e519b
Step 5/8 : RUN npm install -g npm@latest
 ---> Using cache
 ---> df640144338c
Step 6/8 : RUN npm run build
 ---> Running in a639ada043fd

> Gateway@0.0.0 build
> ng build

sh: 1: ng: not found
The command '/bin/sh -c npm run build' returned a non-zero code: 127
43
Published: 2021-04-06 14:47:08

Estoy en una etapa de la vida en la que te cansas de tener miedos
Una etapa en la que nada es tan grave ni nada es tan doloroso como para no seguir adelante
Una etapa donde ya sabes como lidiar con tus debilidades, con el dolor, con la tristeza, con la nostalgia
Una etapa donde agradeces cada día que te regala la vida
Una etapa donde solo buscas mejorar en cada aspecto de tu personalidad
Una etapa donde el dinero ya no es lo más importante, ni los títulos ni lo que te falta, sino lo que eres y a quienes tienes a tu alrededor
Una etapa donde aprendes a valorar a las personas que te rodean y aprendes a apreciar a tus amigos aunque no se parezcan mucho a tí
Una etapa donde escuchar música "de tu época" te alegra el corazón
Una etapa donde un abrazo vale más que cualquier pertenencia
Una etapa donde aprendes que tus errores también te enseñan lecciones
Una etapa donde te quieres más, te perdonas más, te aceptas más y te amas más
Una etapa donde entiendes que solo con cambiar tu actitud, cambia todo
Bienvenidos 43!
NextJs rewrites produce localhost redirected you too many times error
Tags: nextjs, javascript
Published: 2021-04-06 14:42:56

attached is my next.config.js:

According to Nextjs rewrites documentation (https://nextjs.org/docs/api-reference/next.config.js/rewrites#rewriting-to-an-external-url), upon visiting https://nextjswebsite.com/results, the contents of the page should be rewritten with contents of https://mywebsite.com/results.

However, I end up getting "localhost redirected you too many times".

Any ideas what causes the error?
리눅스 명령어 ls를 현대적으로 대체할 수 있는 명령어
Published: 2021-04-06 14:39:59

리눅스계열 터미널에서 가장 많이 사용하는 **ls**명령어.
[exa](https://the.exa.website/)는 이 ls를 현대적으로 대체할 수 있는 막강하고 좋은 명령어입니다.

***

# 특징
- 256개 색 지원
파일의 유형, 목록, 파일에 대하여 색으로 구별해 줍니다.
- 그리드 보기
터미널 창에 맞는 그리드 크기로 파일을 표시합니다.
- Long view
exa의 Long view는 나열한 파일의 이름뿐만 아니라 권한 비트, 파일 크기, 타임 스탬프 등을 포함한 메타 데이터도 표시합니다.
-l 또는 --long옵션을 사용합니다.
- Tree view
exa의 트리보기는 Unix 트리 명령과 유사합니다.
트리보기는 상위 디렉토리 목록 내에 하위 디렉토리를 표시하므로 디렉토리 구조를 시각화하고 어떤 파일이 어디에 있는지 쉽게 확인할 수 있습니다.
- Git 통합
Git 리포지토리 내의 파일을 나열 할 때 exa는 파일을 쿼리하고 각 파일에 대한 Git 상태를 표시하여 이전 커밋 이후 추가되거나 수정 된 내용을 알 수 있습니다.
이 기능은 기본적으로 활성화되지 않으며 Long view와 함께 사용해야 합니다.
- 필터링
목록의 특정 항목만 표시하도록 파일 목록을 필터링하고 정렬할 수 있습니다.
- Icons
exa는 파일 이름 옆에 아이콘을 표시하여 쉽게 구분할 수 있습니다. 아이콘은 특수한 유니 코드 기호이므로 올바른 glyphs를 사용하려면 글꼴을 사용해야 합니다.
- xattrs
exa는 xattrs라고도 하는 파일의 확장 된 속성을 나열 할 수 있습니다.
확장 속성은 사용자가 정의할 수 있으며 다양한 용도로 사용할 수 있습니다.

***

# 설치
exa는 종속성이나 특별한 권한이 필요하지 않은 독립 실행형 바이너리입니다.

OS에서 패키지를 사용할 수 있는 경우 패키지 관리자가 자동으로 다운로드 및 확인을 처리하고 매뉴얼 페이지 및 셸 완성 파일을 설치하도록 하는 것이 가장 쉽습니다.

그렇지 않은 경우에도 수동으로 exa를 설치하거나 직접 복사본을 컴파일 할 수 있습니다.

## macOS
Homebrew 패키지 관리자는 exa 바이너리를 제공하지만 수동으로 설치할 수도 있습니다.
```
$ brew install exa
```
[추가정보](https://the.exa.website/install/macos)

## Linux
배포판에 exa용 패키지가 있는 경우 명령줄에서 설치할 수 있습니다.
- Ubuntu `apt install exa`
- openSUSE `sudo zypper install exa`
- Fedora `dnf install exa`
- Debian `apt install exa`

[소스에서 빌드](https://the.exa.website/install/source)
Upcoming Match Card Using HTML & CSS
Tags: html, css, webdev, beginners
Published: 2021-04-06 14:36:35

Hello, today I created an amazing IPL Match Card using HTML & CSS.this card is currently now using live data if anybody wants this card with live data then suggested a free & good API for this live data.

I hope you like also comments about your thoughts. For more content follow me on Instagram [@developer_nikhil27](https://www.instagram.com/developer_nikhil27/).

**Thank you!**

{% codepen https://codepen.io/NikhilBobade/pen/LYxjOvb %}
Tales from the Scrum Dungeon: Cars and Deer
Tags: scrumdungeon
Published: 2021-04-06 14:34:45

---
title:  Tales from the Scrum Dungeon: Cars and Deer
published: true
description: Sometimes software development is like that.  Sometimes you are the car, and sometimes you are the deer.  And sometimes your TODO comments start to stink after a while.
tags: scrumdungeon
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oo2f1dnawvp509jwwk47.png
---
One office I worked at was on the edge of a city.  Being so close to the countryside meant it was often possible to see some wildlife.  Sometimes the wildlife would get a little too close.

One morning, while driving in, there was an unusual amount of traffic, and it was all merging into the left-hand lane.  As we passed the scene, a police vehicle had its lights on, and was blocking the right hand lane.  Just past the police vehicle was a semi-incapacitated deer, which had been struck by a vehicle.  The officer was waiting for a break in the traffic before he could dispatch the poor animal, and put it out of its misery.

Our office was right next to the road, and had a perfect view of the scene.

Eventually the officer was able to catch a break in the traffic, and with his shotgun, do the poor animal in.  The dead deer sat there for several days afterward.  It was eventually picked up, but not before it had started to bloat.

Sometimes software development is like that.  Sometimes you are the car, and sometimes you are the deer.  And sometimes your TODO comments take a while to get cleaned up.
Tales from the Scrum Dungeon: High Precision Rock Throwing
Tags: scrumdungeon
Published: 2021-04-06 14:24:51

---
title: Tales from the Scrum Dungeon: High Precision Rock Throwing
published: true
description: In software development, there's often a disconnect between what the user wants, what the user asks for, what is designed, and what is actually built.
tags: scrumdungeon
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oo2f1dnawvp509jwwk47.png
---
This story is more of a second-hand story, but still entertaining.

I once worked with a coworker who worked on an app that tracked fluid levels in above ground oil tanks.  Given the potential environmental concerns about leaking oil, the tank level had to be tracked precisely. Very precisely.  Rather than accepting the rounding errors that would come from using a 32 bit floating point number, the client requested that a 64 bit floating point number to be used.  They couldn't afford to be leaking oil, and not notice it.  So, when the app was built, a 64 bit floating point number was used.  This would tracking the tank level easily to the nearest millimeter.

So how was the tank level actually measured so accurately?  An employee would take a rock, and throw it against the side of the tank.  Based on the noise the tank would make, the employee would guess the approximate level of the tank.

Doooonggg!
"Eh, that's got to be about half full, I'd say."

In software development, there's often a disconnect between what the user wants, what the user asks for, what is designed, and what is actually built.

Sometimes the disconnect isn't so obvious.  Sometimes it's precisely obvious.