teleren/devto huggingface dataset:
Google Coral TPU with Edge Devices and MiNiFi
Tags: agent, apachenifi, apachenifi19, cem
Published: 2019-12-23 14:15:28

---
title: Google Coral TPU with Edge Devices and MiNiFi
published: true
date: 2019-08-23 19:33:00 UTC
tags: agent,apache-nifi,apache-nifi-1.9,cem
canonical_url: 
---

### Google Coral TPU with Edge Devices and MiNiFi 

  
Designing Our Edge AI Flow with Cloudera Edge Flow Manager.  
  

[![](https://1.bp.blogspot.com/-JDwdp-ZfYy8/XV8CV7ctHII/AAAAAAAAYHM/ynTk71FRx6s5m7XqxPWp3iNyZVOjX3NmwCLcBGAs/s640/cemCoralFlow.png)](https://1.bp.blogspot.com/-JDwdp-ZfYy8/XV8CV7ctHII/AAAAAAAAYHM/ynTk71FRx6s5m7XqxPWp3iNyZVOjX3NmwCLcBGAs/s1600/cemCoralFlow.png)

  

Configure Your Remote Process Group to Send Data to Your NiFi Cluster
  

[![](https://1.bp.blogspot.com/-jKiJmeoyrhk/XV8CVoEulbI/AAAAAAAAYHI/_x21-w3Sti04_ys0KYqCAp1H060wW7_VwCLcBGAs/s640/cemCoralRPG.png)](https://1.bp.blogspot.com/-jKiJmeoyrhk/XV8CVoEulbI/AAAAAAAAYHI/_x21-w3Sti04_ys0KYqCAp1H060wW7_VwCLcBGAs/s1600/cemCoralRPG.png)

  

Monitor Your Agents From the Events Screen
  

[![](https://1.bp.blogspot.com/-o1O6bDsWpis/XV8CV9mOg-I/AAAAAAAAYHQ/JCw6i0_CaIIR5tmoM5Ts-cJ8Y3ekTuFvgCLcBGAs/s640/cemMonitorEvents.png)](https://1.bp.blogspot.com/-o1O6bDsWpis/XV8CV9mOg-I/AAAAAAAAYHQ/JCw6i0_CaIIR5tmoM5Ts-cJ8Y3ekTuFvgCLcBGAs/s1600/cemMonitorEvents.png)

  

Let's grab all the new images and then delete on completion
  

[![](https://1.bp.blogspot.com/-JrjLqlnjmGw/XV8CWmZX0NI/AAAAAAAAYHU/6wweN9Hzbpsx10GNNhWc2W3QAvBgZ11RwCLcBGAs/s640/coralFetchFile.png)](https://1.bp.blogspot.com/-JrjLqlnjmGw/XV8CWmZX0NI/AAAAAAAAYHU/6wweN9Hzbpsx10GNNhWc2W3QAvBgZ11RwCLcBGAs/s1600/coralFetchFile.png)

  

  

We have Input and Output Ports to have Bidirectional communication with 0-n MiNiFi agents

[![](https://1.bp.blogspot.com/-vxnukWS2hrk/XWA_EhQ_lJI/AAAAAAAAYJY/keCP8xl3_d4pOMGFZImCi1VVDYr04EpHgCLcBGAs/s640/coralBidirectional.png)](https://1.bp.blogspot.com/-vxnukWS2hrk/XWA_EhQ_lJI/AAAAAAAAYJY/keCP8xl3_d4pOMGFZImCi1VVDYr04EpHgCLcBGAs/s1600/coralBidirectional.png)

  

  

Our NiFi flow to process calls from MiNiFi Agents running Coral TPUs
  

[![](https://1.bp.blogspot.com/-m40cBk-oR4E/XWA_E21BkoI/AAAAAAAAYJg/43vubpQE-D8gUEum7ML5HMoIyp29OGpuwCLcBGAs/s640/coralDataProcessingOverview.png)](https://1.bp.blogspot.com/-m40cBk-oR4E/XWA_E21BkoI/AAAAAAAAYJg/43vubpQE-D8gUEum7ML5HMoIyp29OGpuwCLcBGAs/s1600/coralDataProcessingOverview.png)

  

We run a query to check the TensorFlow Lite classification results and send out a slack message.
  

[![](https://1.bp.blogspot.com/-s_tAD1Ex_MI/XWA_E6oNQII/AAAAAAAAYJc/KZyCbOzlqvYfE4xvLqvtrjk9iYdcJbR7QCLcBGAs/s640/coralTensorFlowProcessing.png)](https://1.bp.blogspot.com/-s_tAD1Ex_MI/XWA_E6oNQII/AAAAAAAAYJc/KZyCbOzlqvYfE4xvLqvtrjk9iYdcJbR7QCLcBGAs/s1600/coralTensorFlowProcessing.png)

  

  

Let's push JSON data to a Kafka Cluster in AWS

[![](https://1.bp.blogspot.com/-svmRMndbPM4/XWA3pTZiabI/AAAAAAAAYJQ/AqMyjcSAiIwYpUtg-N33rTSBgpbRlmaDQCEwYBhgL/s640/publishKafkaRec2.png)](https://1.bp.blogspot.com/-svmRMndbPM4/XWA3pTZiabI/AAAAAAAAYJQ/AqMyjcSAiIwYpUtg-N33rTSBgpbRlmaDQCEwYBhgL/s1600/publishKafkaRec2.png)
Introduction to Docker part 4
Tags: docker, ubuntu
Published: 2019-08-23 19:11:31

Checkout Part 4 of my quick introduction to @Docker #blog posts!

I'll be doing some hands one demos with a few @digitalocean  #Ubuntu servers:

https://bobbyiliev.com/blog/introduction-to-docker-part-4

Hope that this helps!
Let me know if you have any questions :)
What is the career track at your job?
Tags: discuss
Published: 2019-08-23 18:42:53

---
title: What is the career track at your job?
published: true
tags: discuss
cover_image: https://miro.medium.com/max/1920/1*MUNL0Oi0qfT5hK3P9FXbOQ.jpeg
---

I read an interesting article about [Engineering Culture at Shutterstock](https://jasonoh.org/2018/08/31/Designing-Engineering-Culture-Shutterstock.html) and the illustration of IC vs Management Career Tracks made me think about how inconsistent it is across the industry. 
![ IC vs Management Career Tracks](https://jasonoh.org/assets/img/posts/careertracks.png)

I've found [Levels.fyi](http://levels.fyi) to be helpful at shedding some light on the parity of these levels across organizations.

I am curious about what the career track looks like at your job.
Generating JSON Data in Apache NiFi
Tags: nifi
Published: 2019-12-23 14:15:42

---
title: Generating JSON Data in Apache NiFi
published: true
date: 2019-08-23 18:33:00 UTC
tags: nifi
canonical_url: 
---

#### Example of a JSON IoT Generator
  
{  
   "ip": "${ip()}", 
   "unique\_id": "${UUID()}",  
   "thread": "${thread()}",  
   "hostname": "${hostname()}",  
   "sensor\_9": ${random():mod(100)},  
   "sensor\_id": ${random():mod(30)},  
   "sensor\_3": ${random():mod(50)},  
   "sensor\_2": ${random():mod(500)},  
   "sensor\_1": ${random():mod(110)},  
   "sensor\_0": ${random():mod(150)},  
   "sensor\_7": ${random():mod(255)},  
   "sensor\_6": ${random():mod(95)},  
   "sensor\_5": ${random():mod(80)},  
   "sensor\_ts": ${now():toNumber()},  
   "sensor\_8": ${random():mod(120)},  
   "sensor\_4": ${random():mod(60)},  
   "sensor\_11": ${random():mod(20)},  
   "sensor\_10": ${random():mod(10)}  
}  
  
#### Resources

- [https://www.datainmotion.dev/2019/04/integration-testing-for-apache-nifi.html](https://www.datainmotion.dev/2019/04/integration-testing-for-apache-nifi.html)
- [https://medium.com/hashmapinc/its-here-an-apache-nifi-simulator-for-generating-random-and-realistic-time-series-data-d7e463aa5e78](https://medium.com/hashmapinc/its-here-an-apache-nifi-simulator-for-generating-random-and-realistic-time-series-data-d7e463aa5e78)
- [https://github.com/TouK/plumber](https://github.com/TouK/plumber)
How ORM(Object-Relational Mapping) uses the descriptor protocol?
Tags: python
Published: 2019-08-23 18:30:49

#Recap
_(Nostalgia)_
From my previous post, we understood what is descriptor protocol and how to use it in many cases. How to modify the __.__(dot) operator and changing behaviour while setting the value.

#Coming to the point
You might have heard about Django, and also about how cool is it's ORM. You can define classes and that's it. It will handle all the complexities of the backend database.

You can declare tables as class, columns as class attributes and rows as objects of that class

```python
# of course you need to import models of Django.
class User(models.Model):
    email = models.CharField(max_length=50)
    mobile = models.IntegerField()
...
```
So this class will be treated as user table and entries in this table are basically objects of this class. To handle fetch, update and filter out queries Django uses manager. There is a default manager provided by Django but you can modify it.
```python
class UserManager(models.Manager):
    def get_queryset(self):
...
# this will modify _filter_ behaviour.
```
So all these cool features Djnago gives in its ORM and many more.
    

#Some familiar instances
If you have used Django ORM or any other similar, you might have come across something like this
```python
...
class Order(models.Model):
    user = models.ForeignKey(User)
...

```
Now suppose we want to change any attribute_(say first_name)_ of a user via order instance. So we will have to do something like this

```python
...
o.user.first_name = "Sumit"
...
```
Here Django uses their famous ForwardManyToOneDescriptor to handle the reference. If you want to check more on this you can go to their [source code](https://github.com/django/django/blob/4122d9d3f1983eea612f236e941d937bd8589a0d/django/db/models/fields/related_descriptors.py#L81)

Few lines are here
```python
if value is not None and not isinstance(value, self.field.remote_field.model._meta.concrete_model):
            raise ValueError(
                'Cannot assign "%r": "%s.%s" must be a "%s" instance.' % (
                    value,
                    instance._meta.object_name,
                    self.field.name,
                    self.field.remote_field.model._meta.object_name,
                )
            )
```

It checks the type of value, whether it matches the instance of the related class or not.

#Conclusion
So basically even though we don't use descriptor protocol in our day to day coding but this is one secret that the guys building the framework knows and it's a nice tool to have.


|Liked my post?|
|---------------|
|  [![](https://thepracticaldev.s3.amazonaws.com/i/lsfkqfysa58u59627uy6.png)](https://ko-fi.com/A0A5WBC1)|
A simple bookmarklet to tweet the current page
Tags: bookmarklet, twitter, webdev
Published: 2019-08-23 18:24:23

---
title: A simple bookmarklet to tweet the current page
published: true
description: How to write a bookmarklet to tweet the current page.
tags: bookmarklet, twitter, webdev
---

I like tweeting about pages I read in the following format:


> "Headline"
>
> https://example.com

Most "share this" buttons add a lot of cruft and if there is none, it is annoying having to copy the text first and then the URL into Twitter.

With this bookmarklet, you can highlight some text, click the bookmarklet and get a tweet window in a new tab:


```javascript
javascript:(function(){
  n=getSelection().anchorNode;
  t=n.nodeType===3?n.data:n.innerText;t='“'+t+'”\\n\\n';
  window.open(`https://twitter.com/intent/tweet?
  text=${encodeURIComponent(t)}${document.location.href}`)
})()
```
*Explanation:*

* We wrap the whole thing in an [IIFE](https://developer.mozilla.org/en-US/docs/Glossary/IIFE) to avoid the browser redirecting to "javascript://"
* We get the `anchorNode` of the current `Selection` object
* We check the type. If it's a text node, we read the `data`, if it is HTML, we get the `innerText`
* We open a window (which these days results in a new tab) and call the Twitter intend with the text followed by two linebreaks and the URL of the document. 

That's it. 

Here's the minified version to add to your bookmarks:

```
javascript:(function(){n=getSelection().anchorNode;t=n.nodeType===3?n.data:n.innerText;t='“'+t+'”\\n\\n';window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(t)}${document.location.href}`)})()
```
Copy this, go to your bookmarks toolbar (change in view if it isn't visible), and set the location as the code above: 

![Bookmark settings](https://thepracticaldev.s3.amazonaws.com/i/08bpx7hqtjo0ullmz1q8.png)

Alternatively, [go to the post on my blog](https://christianheilmann.com/2019/08/23/tweet-this-page-bookmarklet/) (as dev.to disallows javascript: links) and drag the "tweet this" link to your toolbar. 

Voilà, happy tweeting.
What mnemonic devices do you use in programming?
Tags: friday
Published: 2019-08-23 17:42:32

---
title: What mnemonic devices do you use in programming?
published: true
description: Any helpful tricks you use to remember random things
tags: friday
---


I use a few "cute" mnemonics when there are some things I just can't remember and I'm curious as to what ones other people use.

For example:

For `grep`, I usually can't remember if the pattern comes first or the file, so I think of my mother-in-law who cross stitches and the "pattern files" she uses: `grep <pattern> <file>`

For `find`, similarly, I think of "location flags" planted in the world:
`find <location> <flags>`

Of course, [tldr](https://tldr.sh) is the *real* hero here.

For markdown links, I usually can't remember if it's `[text](link)` or `(text)[link]`, but b comes before p, so brackets come before parenthesis.



Share yours!


P.S. The worst "anti-mnemonic" is how in Vim `gg` goes to the beginning of the file, but in Starcraft, you always say "gg" at the END of the game :P
'60 Days of Flutter: Building a Messenger from Scratch' : Day 9–10–11 : Creating Awesome Register Screen in Flutter
Tags: flutter, android, mobile
Published: 2019-08-23 17:31:58

https://medium.com/@adityadroid/60-days-of-flutter-day-9-10-11-creating-awesome-register-screen-in-flutter-77db27227c07
Thank you react-redux!!
Tags: javascript, react, redux
Published: 2019-08-23 16:35:50

From react-redux 6 and further, people won't be able to access store from outside of the Provider Context. I mean, they can still try and sometimes they think that they succeeded, BUT, the underlying truth is that they will be probably failing every single time.

As from the version mentioned and above, if you access the state from outside of the reducer context while doing an action, you'll see a really scaring error showing up. That should be in there ever since day 1 in Redux, but it wasn't and now it is, which will simply prevent people from doing risky stuff like exposing store in a variable to access it in components/methods without using a connect or a hook ( react-redux > 7 ).

In one of the apps that I work with, our team had the terrible habit of doing that. When I realised it was too late and that pattern was already spread all over the application, thankfully during react-redux migration those errors started to occur and I finally had a extremely powerful reason to convince people that it was wrong, and I finally could get rid of that extremely painful and risky anti pattern.

So, thank you react-redux for doing that! Icing sugar is the store as prop deprecation, but, that shouldn't be even considered a breaking since no one should be using ( but, yes, we were using it too ).
What was your win this week?
Tags: discuss, weeklyretro
Published: 2019-08-23 16:19:26

---
title: What was your win this week?
published: true
description: Got to all your meetings on time? Started a new project? Fixed a tricky bug?
tags: discuss, weeklyretro
cover_image: https://cl.ly/188e843c2985/download/Image%202019-02-15%20at%202.36.37%20PM.png
---

👋👋👋👋

Looking back on your week -- what was something you're proud of?

All wins count -- big or small 🎉

Examples of 'wins' include:

- Getting a promotion!
- Starting a new project
- Fixing a tricky bug
- Cleaning your house...or whatever else that may spark joy 😄

![cool-dog](https://media.giphy.com/media/YRPVlInmP08agsbXQR/giphy.gif)


Happy Friday!
Black or white
Tags: discuss, programming
Published: 2019-08-23 16:06:16

---
title: Black or white
published: true
description: This problem also known as a false dichotomy or false dilemma. You presented two alternative states as the only possibilities, when in fact more possibilities exist.
tags: [discuss, programming]
cover_image: https://thepracticaldev.s3.amazonaws.com/i/k4vbfp28jaenv9w6b0kw.jpg
---


## What is "black or white" problem?

This problem also is known as "false dichotomy" (Greek: `διχοτομία`  "dividing in two") or "false dilemma". 

According to [yourlogicalfallacyis](https://yourlogicalfallacyis.com/black-or-white): You presented two alternative states as the only possibilities, when in fact more possibilities exist.

Also known as the false dilemma, this insidious tactic has the appearance of forming a logical argument, but under closer scrutiny, it becomes evident that there are more possibilities than the either/or choice that is presented. Binary, black-or-white thinking doesn't allow for the many different variables, conditions, and contexts in which there would exist more than just the two possibilities put forth. It frames the argument misleadingly and obscures rational, honest debate.

For example, the claim that "you’re either with me, or you’re against me" is a false dichotomy.

## In software development

Let's talk about the false dichotomy in the context of software development.

### Types vs tests

No types don't replace tests and tests doesn't replace types. You can use both. See [this article](https://dev.to/stereobooster/pragmatic-types-type-systems-vs-tests-4k3e) for details.

### Self-documenting code vs comments

No self-documenting code doesn't mean that you can omit comments. Self-documenting is clean code with good naming, it can cover question: what and how. Comments can cover questions: what (extended explanation of business-specific terms), why (extended explanation of business-specific rules, or why we need to use this trick/hack)

### Types vs documentation

Types don't replace documentation. See the previous section.

### Dynamic type checking vs static type checking

Most static type checking use dynamic type checking as well.

## Name your example

Do you know examples of your "favorite" false dichotomy in software development?

> Photo by Rares Cimpean on Unsplash
Favorite Front-end/UI developer interview questions?
Tags: discuss, career, hiring, webdev
Published: 2019-08-23 15:48:34

---
title: Favorite Front-end/UI developer interview questions?
published: true
description: Help me compile your favorite interview questions. 
tags: #discuss #career #hiring #webdev
---

Hey Dev community! Hit me with your favorite front-end/UI developer interview questions. 

HTML, CSS, JavaScript, Accessibility etc. 

Helping a student today prep for a final interview 🙏
Redirecionamento em JavaScript mantendo os parâmetros da URL
Tags: javascript, react
Published: 2019-08-23 15:39:09


![Sempre delcare suas variáveis com let ou const
](https://thepracticaldev.s3.amazonaws.com/i/ia9owcf9nay5n1t62phe.jpg)

Se você quiser fazer um redirecionamento usando JavaScript e quiser manter os mesmo parâmetros da url (querystring) que a página está recebendo, você consegue facilmente, basta pegar o `document.location.search` e concatená-lo com sua url de destino.

Não deixe de visitar o repositório do github com todas as dicas em emersonbrogadev/social-media-snippets.

[➜ Participe da nossa lista de desenvolvedores](https://emersonbroga.com/e/participe/)
[➜ Aprenda ES6](https://amzn.to/2J4XnLg)
[➜ Veja as dicas no Instagram](https://www.instagram.com/emersonbrogadev/)
[➜ Assista nosso canal no YouTube](https://www.youtube.com/c/emersonbroga/)
[➜ Curta nossa página no Facebook](https://www.facebook.com/emersonbrogadev/)
[➜ Não perca as atualizações no Twitter](https://www.twitter.com/emersonbrogadev/)
[➜ Veja os repositórios no Github](https://www.github.com/emersonbrogadev/)

=)
TypeScript: how do you share type definitions across multiple projects?
Tags: discuss, typescript, productivity, webdev
Published: 2019-08-23 15:13:24

Hey, devs! I've got a question for all TS folks around. How do you handle sharing common types/interfaces/enums across multiple TypeScript projects? Do you publish them to private NPM package, include into a project as a git sub-module or something else? I'm really curious to see what other options we have nowadays. Please, share your thoughts on this... Thanks you all in advance!

Have a great weekend meanwhile! Cheers!
Add to a List in D
Tags: dlang, tutorial
Published: 2019-08-23 14:31:31

I thought this would be easy, considering I couldn't even provide a boolean it should be a surprise. D is understandably a different story. D provides array and associative arrays. These are generally sufficient and reaching for a container library isn't necessary.

Arrays utilize [] to denote the type and create literals.

```dlang
string[] arrayVarName;
arrayVarName = ["array literal value"];
```

Unlike every other language, D does not use addition to indicate concatenation.

```dlang
arrayVarName ~= "additional value";
```

This is often referred to as the append operator because arrays have reserved space where this might not cause an allocation. 

This also works with array. 

```dlang
arrayVarName ~= ["more", "values"];
```

Two lists can be combined with concatenation.

```dlang
arrayVarName = ["value"] ~ ["more", "values"];
```

And since D has operator overloading, user types these can have appropriately defined behavior on class or struct. Again this uses D powerful templates and is beyond this tutorial.

https://stackoverflow.com/questions/7826891/elegant-operator-overloading-in-d
Start achieving your goals! Stop procrastinating
Tags: career, beginners, productivity, motivation
Published: 2019-08-23 14:05:45

Have you had those days when you have a lot of goals in your head? 
Are there projects you'd like to do but haven't started yet? 
Your thoughts are from one idea to another? 
Are you in those moments when you're thinking so much until you get a headache and end up in your bed watching Netflix, playing or just doing something that has nothing to do with meeting your goals? xD
When we are in these situations we tend to get so stressed out thinking that our mind rejects everything that produces stress and so we end up procrastinating.

<h2>What to do when we are in these situations?</h2>

First of all, breathe. 
Then, have a good breakfast, find a place where you feel comfortable and start writing a list with everything you want to do, list all the activities, projects and goals you have in mind. When you finish the list, start classifying them into short term and long term benefits, for example, you want to develop a project for a client or a specific target but you also want to study a new language that catches your attention. The first one would take several weeks but would bring immediate benefits (short-term benefit) and the second would take less of you but the benefits would not be seen now since you don't currently have a specific project (long-term benefit).

Once you have the list in two blocks, keep the list that will benefit you in the short term, that doesn't mean you're not going to do the other thing, just for now, you will focus all your attention on activities that will benefit you in the short term.

Having these goals in mind, start to write a list of daily activities to achieve these goals. It is important to write them down because this way you will feel more motivated and committed and each time you complete an activity you will be able to cross it off your list and continue with the next one. That feeling of accomplishing an activity will make you feel good and will keep you motivated.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/6g7xqmsxks1s6t5raei6.jpg)

:heavy_check_mark: Put your ideas in order and be clear about what you want to do.
:heavy_check_mark: Do it preferably at the beginning of the day after a good breakfast.
:heavy_check_mark: Write down a list of goals and objectives you want to achieve.
:heavy_check_mark: Classify those goals into short and long term benefits.
:heavy_check_mark: Keep short-term goals.
:heavy_check_mark: Make a list of daily activities (you can include schedules) to meet each goal.
:heavy_check_mark: Begin to perform each activity and give your best effort.


There are many ways to achieve goals, I only share the method that worked for me when I was overwhelmed with a lot of things to do. I hope these tips will help you :sunflower:

Thanks for reading!
Have a nice day, coders💜
NoobCMS: Font Awesome Integration
Tags: beginners, tutorial, noobcms
Published: 2019-08-23 13:58:57

## What is Font Awesome?
Font awesome is a library of icons compiled to help you make integrate icons in your project very fast, easily and without a need to store or edit images. 

[http://www.fontawesome.com](http://www.fontawesome.com)

![Font Awesome Website](https://thepracticaldev.s3.amazonaws.com/i/98n1ae0g0c3nu1sbg9of.png)

Now once you register, you can only use 1 free kit to integrate, into your website which comes with 1500+ icons, so that does give you all what you need.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/mvonl940zd0to5s7gr24.png)

Now once you open the kit, you will have an integration URL, something like this.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/jujwi38sz4gkb2tm26sm.png)

We copy this URL and paste it into the HEAD tag of our login.php

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/ov7x20j1r1yiirn7um26.png)

Now lets get to font awesome icon and integrate an icon for our login button.

[https://fontawesome.com/icons?d=gallery](https://fontawesome.com/icons?d=gallery)

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/vxo3bpqqr6p60nsmqtk1.png)

Click on the __sign-in-alt__ icon

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/f01u8027e434seb7egjm.png)

Now you see the <i> tag, this is the code to call the icon. Paste it in between the button.

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/et4ljg96ha3l1gcg7wd2.png)

Lets save and refresh our browser

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/l27qam78avz867l6z2wt.png)

We have an icon. Cheers... :)

[Noob Index](https://dev.to/th3n00bc0d3r/noob-guides-index-4mne)