teleren/devto huggingface dataset:
Notion for Software Engineers
Published: 2023-10-13 05:51:19

---
title: Notion for Software Engineers
published: true
date: 2023-08-14 08:54:41 UTC
tags: 
canonical_url: 
---

Using Notion as a software engineer can greatly enhance your productivity, organization, and collaboration. Here's a step-by-step guide on how to effectively use Notion:

**1. Project Management:**

- Create a workspace: Start by creating a dedicated workspace in Notion for your engineering projects.

- Project boards: Set up project boards using Notion's kanban board or timeline views. Create columns for tasks such as "To Do," "In Progress," and "Completed."

- Task lists: Within each project, create task lists using checkboxes or bullet points. Assign priorities and due dates to tasks.

**2. Documentation:**

- Create a database: Build a database for technical documentation, coding guidelines, and architecture. Use different properties for project links, code snippets, and related documents.

- Rich text editor: Write detailed documentation using Notion's rich text editor. Embed code snippets, diagrams, and images to explain concepts effectively.

**3. Knowledge Base:**

- Create a knowledge base: Set up a knowledge base to store technical notes, troubleshooting guides, and lessons learned. Organize it with pages or databases for easy navigation.

- Cross-linking: Link related notes and documents to create a web of interconnected knowledge. This makes information discovery more efficient.

**4. Task Tracking and Coding:**

- To-do lists: Use Notion's to-do lists to keep track of tasks related to coding, debugging, and testing. Link these tasks to the relevant projects.

- Code snippets: Store and organize code snippets in a dedicated section. Use code block formatting for clarity and syntax highlighting.

**5. Collaboration:**

- Share documents: Collaborate with team members by sharing documents and granting them access. Collaborators can leave comments and provide feedback.

- Notifications: Use @mentions to notify team members about specific tasks, discussions, or updates.

**6. Customization:**

- Templates: Utilize Notion's templates for various engineering tasks, such as sprint planning, retrospectives, and documentation.

- Custom databases: Create custom databases for bug tracking, feature requests, and test cases. Tailor them to your specific needs.

**7. Personal Organization:**

- Personal notes: Use Notion for personal organization, including setting career goals, tracking learning resources, and managing your professional growth.

**8. Integration:**

- Connect with tools: Integrate Notion with tools like calendars, GitHub, and JIRA to synchronize tasks and events.

**9. Offline Access:**

- Work offline: Install Notion's desktop or mobile app to work on your projects and documents even without an internet connection. Changes will sync when you're online again.

**10. Cross-Platform:**

- Access across devices: Use Notion seamlessly across different devices, including web browsers, desktop apps, and mobile apps.
🕒 How Long Ago? A TimeAgo Component in React ⏳
Tags: react, datefns, javascript, webdev
Published: 2023-08-06 09:32:33

📅 Timestamp: 2023-08-06T12:30:00

Ever wondered how to display the time elapsed since a specific event? 🤔 With the TimeAgo component in React, you can do just that! 🚀

Simply pass the timestamp as a prop, and the TimeAgo component will automatically calculate the time elapsed since that moment. 💡

🕑 Examples:
timestamp="2023-08-06T12:30:00" ➡️ "Less than a minute ago"
timestamp="2023-08-05T15:45:00" ➡️ "about 21 hours ago"
timestamp="2023-08-04T10:00:00" ➡️ "2 days ago"

Now you can keep your users informed about the freshness of the content or show how long ago a particular event occurred. ⏰

```
import { parseISO, formatDistanceToNow } from "date-fns";

const TimeAgo = ({ timestamp }) => {
	let timeAgo = "";

	if (timestamp) {
		const date = parseISO(timestamp);
		const timePeriod = formatDistanceToNow(date);
		timeAgo = `${timePeriod} ago`;
	}

	return (
		<span>
			&nbsp; <i>{timeAgo}</i>
		</span>
	);
};

export default TimeAgo;

```

🚀 Give it a try and boost your app's interactivity with TimeAgo! Happy coding! 😄

Code - [Github](https://github.com/bansalgokul/React-Components)
Date-fns (npm) - [Library](https://date-fns.org/v2.30.0/docs/formatDistanceToNow)
Auth with node js and express js and Json web token
Published: 2023-08-14 08:37:59

User authentication is a crucial aspect of web applications that ensures secure access to resources. In this article, we'll explore how to implement user authentication using Node.js, Express.js, and JSON Web Tokens (JWT).

Prerequisites:
Before we begin, make sure you have Node.js and npm (Node Package Manager) installed on your system.

Table of Contents:

Setting Up the Project
Creating the User Model
Setting Up Express and Middleware
Registering Users
Implementing User Login
Generating JSON Web Tokens (JWT)
Protecting Routes with JWT Middleware
Conclusion
1. Setting Up the Project:
Create a new project folder and initialize it with npm init. Install necessary packages like express, mongoose, and jsonwebtoken.

2. Creating the User Model:
Define a user model using a library like Mongoose. Include fields like username, email, and password. Hash the password before saving it to the database.

3. Setting Up Express and Middleware:
Create an Express application and set up middleware like body-parser to parse incoming data and cors for handling CORS issues.

4. Registering Users:
Create a registration route where users can sign up. Validate user input, hash the password, and save the user to the database.

5. Implementing User Login:
Set up a login route where users can authenticate themselves. Validate the provided credentials against the stored user data.

6. Generating JSON Web Tokens (JWT):
After successful login, generate a JWT for the user. Use the jsonwebtoken library to create tokens containing user data and an expiration time.

7. Protecting Routes with JWT Middleware:
Create middleware that verifies incoming JWTs before granting access to protected routes. Attach this middleware to routes that require authentication.

8. Conclusion:
By following the steps outlined in this article, you've successfully implemented user authentication using Node.js, Express.js, and JSON Web Tokens. This process ensures that your application remains secure and only allows authorized users to access protected resources.

Remember that security is an ongoing concern. Regularly update dependencies, follow best practices, and consider additional security measures like using HTTPS and implementing password recovery mechanisms.

Note: This is a high-level outline with brief descriptions of each section. You can expand each section with code examples, explanations, and further details as needed.

Please adapt and expand this outline to create a comprehensive article that provides readers with a clear understanding of how to implement user authentication using Node.js, Express.js, and JSON Web Tokens.
Step-by-step guide on installing AgensBrowser on Windows.
Tags: bitnine, database, apacheage, agensgraph
Published: 2023-08-14 08:34:26

**Introduction**
AgensBrowser is a user interface which allows users to manage AgensGraph on a web browser. In this tutorial, you will install AgensBrowser on your Windows OS.

**Prerequisites.**
Make sure you have done the following,
- Installed Java 1.8.
- Installed AgensGraph or use [this](https://dev.to/chidera/step-by-step-guide-on-installing-agensgraph-on-windows-2ooh) tutorial.
- Installed Visual Studio code or any editor of choice.

**AgensBrowser Installation Guide.**

1. Visit the official Window's installation guide [here](https://bitnine.net/downloads-4/agensbrowser-v-1-0/) and fill in your details, so you can receive the download link in your mailbox.
2. Click on the download button in the mail, this will take you to a page where you can download the `.zip` file.
3. Download the zip file and extract its contents to a folder.
4. Open this folder with your editor.
5. Create a new file known as `agensbrowser.BAT`, add the following lines below to that file.
    ```
java -jar agens-browser-web-1.0.jar --spring.config.name=agens-browser.config
    ```
6. Open the `agens-browser.config.yml` file, view its configuration, be sure that the settings there correspond to the AgensGraph you installed earlier.
7. From the directory where this file is located, run this file as an executable to launch the AgensBrowser by using this command below.
    `./agensbrowser.BAT`
8. Visit this URL http://localhost:8085/index.html on your browser to view AgensBrowser on your screen, This will output the AgensBrowser management console on the screen as seen below, where one can use its rich features such as Rest API Integration to monitor a database.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0qoso2te0jyzmch9t2br.jpg)

**Conclusion**
AgensBrowser is a management tool for AgensGraph, it provides various features such as Rest API Integration and for easy monitoring and management.
Kotlin Code Smell 28 - Abstract Names
Tags: kotlin, codesmells, cleancode, programming
Published: 2023-08-14 09:57:29

---
title: Kotlin Code Smell 28 - Abstract Names
published: true
date: 2023-08-14 08:00:09 UTC
tags: kotlin,codesmells,cleancode,programming
canonical_url: https://yonatankarp.com/kotlin-code-smell-28-abstract-names
---

## Problem

- Implemental Naming
- Meaningless names
- Broken [**MAPPER**](https://maximilianocontieri.com/what-is-wrong-with-software) and [**Bijection**](https://maximilianocontieri.com/the-one-and-only-software-design-principle) to real-world entities.

## Solution

1. Choose meaningful names.
2. Find metaphors.
3. Avoid words like _abstract_, _base_, _generic_, _helper_, _data_, _info_, etc.
4. Use [**rules**](https://maximilianocontieri.com/what-exactly-is-a-name-part-ii-rehab) for naming.

## Sample Code

### Wrong

```kotlin
class Repository {
    // ...
}

class MeetingCollection {
    // ...
}

class AccountsComposite {
    // ...
}

class NoteArray {
    // ...
}

class LogCollector {
    // ...
}

abstract class SearcherBase {
    // ...
}

abstract class AbstractTransportation {
    // ...
}

```

### Right

```kotlin
class Schedule {
    // ...
}

class Portfolio {
    // ...
}

class NoteBook {
    // ...
}

class Journal {
    // ...
}

class Vehicle {
    // ...
}

```

## Conclusion

Finding names is the last thing we should do in our designs. Unless we have a clear business understanding, good names emerge at the end after defining behavior and protocol boundaries.

* * *

I hope you enjoyed this journey and learned something new. If you want to stay updated with my latest thoughts and ideas, feel free to register for my [**newsletter**](https://yonatankarp.com/newsletter). You can also find me on [**LinkedIn**](https://www.linkedin.com/in/yonatankarp/) or [**Twitter**](https://twitter.com/yonatan_karp). Let's stay connected and keep the conversation going!

* * *

## Credits

- [Code Smell 38 - Abstract Names](https://maximilianocontieri.com/code-smell-38-abstract-names) by [Maxi Contieri](https://hashnode.com/@mcsee)
Hello Communnity !
Tags: opensource, android, java, github
Published: 2023-08-14 07:56:23

Hey everyone,
This is my first post to the community, hoping to get a good response. 
I am familiar with Java and started android development recently.
Joined the community in hope of the endless opportunities of learning it could bring. Looking forward to get guided by mentors and share things from my part that could be useful to the community.
5 Books Every Developer Must Read
Tags: books, learning
Published: 2023-08-14 07:48:15



**5 Awesome Books to Level Up Your Developer Game and Your Life! 📚🚀**

We all know that coding is our bread and butter, but there's a whole world of wisdom out there beyond the screen. Here are five non-tech books that will not only make you a better programmer but also a more awesome human being.

📕
**1. "Sapiens: A Brief History of Humankind" by Yuval Noah Harari**
*Why it's a game-changer:* Forget about "Back to the Future." This book is your time machine to understand how humans became the quirky creatures we are today. It's like discovering the secret source code of our society, so you can write apps that sync with real-world needs.

📗
**2. "Meditations" by Marcus Aurelius**
*Why it's your zen master:* When bugs and glitches have you pulling your hair out, Marcus Aurelius swoops in like a programming philosopher. He'll teach you to stay calm in the chaos of coding, just like debugging without breaking a sweat (or keyboard)!

📘
**3. "To Kill a Mockingbird" by Harper Lee**
*Why it's empathy fuel:* You thought code comments were important? Try understanding different perspectives and fostering empathy. This book is your go-to guide for walking in others' shoes, which is basically debugging the human experience.

📙
**4. "The Art of Happiness" by Dalai Lama and Howard Cutler**
*Why it's your happiness debugger:* Who needs a "404 Not Found" error in their life? Mix the Dalai Lama's wisdom with some psychological hacks, and you've got a recipe for happiness smoother than a perfectly indented code block.

📔
**5. "The Alchemist" by Paulo Coelho**
*Why it's your motivational boost:* No, it's not about turning lead into gold (sorry, alchemists). This book is about finding your personal treasure, like uncovering that genius algorithm idea while sipping your morning coffee. Plus, it's a great reminder that even our dev journey can have its magical moments!

So there you have it. These non-tech reads will not only level up your developer game but also add a touch of awesome sauce to your life. Remember, life's too short for bad code and missed punchlines!
Những người nào không nên ăn gạo lứt thường xuyên?
Tags: khanhan, gaohuuco, gaohuucokhanhan
Published: 2023-08-14 07:50:57

Gạo lứt là một loại gạo được xem là tốt cho sức khỏe nhờ vào các giá trị dinh dưỡng cao. Tuy nhiên, không phải ai cũng nên ăn gạo lứt thường xuyên. Trong bài viết này, chúng ta sẽ tìm hiểu về những người nào không nên ăn gạo lứt thường xuyên.

1. Người bị tiểu đường

Người bị tiểu đường nên hạn chế ăn gạo lứt hoặc tùy thuộc vào mức độ của bệnh. Gạo lứt có hàm lượng carbohydrate thấp hơn so với gạo trắng, tuy nhiên nó vẫn chứa carbohydrate, do đó có thể gây tăng đường huyết. Nếu bạn là người bị tiểu đường, hãy hỏi ý kiến của bác sĩ để biết mức độ ăn gạo lứt phù hợp với sức khỏe của bạn.

2. Người bị rối loạn tiêu hóa

Nếu bạn là người bị rối loạn tiêu hóa như táo bón hoặc đầy hơi, ăn gạo lứt có thể làm tình trạng của bạn trở nên tồi tệ hơn. Gạo lứt chứa nhiều chất xơ, có thể gây khó tiêu hoặc khó hấp thu. Nếu bạn là người bị rối loạn tiêu hóa, hãy cân nhắc trước khi ăn gạo lứt.

3. Người bị dị ứng với gluten

Gạo lứt không chứa gluten, do đó nó được coi là một lựa chọn tốt cho những người bị dị ứng với gluten. Tuy nhiên, nếu bạn mua gạo lứt từ các nhà sản xuất không đảm bảo về quy trình sản xuất, có thể gạo lứt của bạn bị nhiễm gluten từ các sản phẩm khác. Vì vậy, nếu bạn là người bị dị ứng với gluten, hãy chọn các nhà sản xuất uy tín và đảm bảo chất lượng sản phẩm.

4. Người bị suy thận

Người muốn giảm cân
Gạo lứt được coi là một lựa chọn tốt cho những người muốn giảm cân do có chứa ít carbohydrate và nhiều chất xơ giúp giảm cảm giác đói. Tuy nhiên, nếu bạn muốn giảm cân, hãy ăn gạo lứt trong một khẩu phần ăn cân đối và kết hợp với các loại rau củ để cung cấp đầy đủ dinh dưỡng cho cơ thể.

Trên đây là những người không nên ăn gạo lứt thường xuyên. Tuy nhiên, nếu bạn không thuộc vào những nhóm trên và muốn có một chế độ ăn uống lành mạnh, bạn có thể thêm gạo lứt vào khẩu phần ăn của mình. Hãy nhớ rằng, việc ăn uống lành mạnh không chỉ phụ thuộc vào việc ăn những loại thực phẩm tốt cho sức khỏe mà còn phụ thuộc vào khẩu phần và cách thức chế biến.
NGuồn chi tiết https://www.khanhan.net/nhung-nguoi-nao-khong-nen-an-gao-lut.html
CommonJs in simple language
Tags: javascript, node, beginners, programming
Published: 2023-08-14 07:49:02

All lines of codes has different distinct standards of writing them and Javascript is of no different, hence come the ConnonJs standard which was the older way of structuring js [modules](https://dev.to/samluxtech/what-is-a-module-188h).

The coomonJs comes with a method of sharing data using the export and require keywords in a different syntax;

```
const userDATA = () => {
    return "user info"
}

module.exports = {
    userDATA
}
```

This lines of codes showing that you want to export the data containing the userDATA while,

```
const {userDATA} = require ("./index.js")

console.log (userDATA())
```

is the syntax to import the data to another [module]( https://dev.to/samluxtech/what-is-a-module-188h).

commonJs is commonly used while using the Node.js for building your server side applications {API}.

Checkout my next post on the newest standard of defining your modules.
UPDATED: Bootstrap 5.3.0 Navbar Multi Level and Mega Menu with Dark Theme!
Tags: bootstrap, codepen, learning, css
Published: 2023-08-14 07:48:54

I have updated my famous (over 30.000 views) Bootstrap Multi-Level Navbar codepen, so that everybody can use it now for their latest Boostrap 5.3 projects. It also includes a small JavaScript function to switch between light and dark theme!

{% codepen https://codepen.io/typo3-freelancer/pen/poEvyGj %}

As the digital world keeps evolving, it's essential to stay ahead of the curve. That's why I'd like to invite you all to subscribe to my expert newsletter where I delve deep into the latest trends, updates, and tips in the tech space: https://simonkoehler.com/newsletter
Block ANY ads for FREE 🤯
Tags: adguard, tutorial, webdev, raspberrypi
Published: 2023-08-14 07:46:26

In this guide, we will show you how to block ANY ads on various websites for FREE with AdGuard Home on Raspberry Pi.

---
Do you like our instructions or do you want to know more about specific topics?
Feel free to write it in the comments and leave a like there!

---

First of all, we need to install Raspberry Pi OS.

For this we need the Raspberry Pi Imager, which we download from the official website:

https://raspberrypi.com/software

After launching the software, the first thing we need to do is select our OS. We choose among

`Raspberry Pi OS (Other) -> Raspberry Pi OS (64-bit)`

out of.

Then we select our SD card.

Finally we go to "Write"

This process overwrites all files on the hard disk and these cannot be recovered afterwards!

After we have done that, we insert the SD card into the Raspberry Pi.

Optionally, we can still connect it with a LAN cable so that we can achieve better performance. But we can also use the WiFi in the facility as usual. The setup is quite quick and self-explanatory. If updates are to be installed during setup, feel free to skip this step!

After the restart we see the graphical interface. If you want us to do some more items to beautify the design, please let us know in the comments!

But first we open the terminal and type two codes into the window. You can simply copy and paste these.

```
CD
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_armv6.tar.gz'
tar -f AdGuardHome_linux_armv6.tar.gz -x -v
```

and

```
cd ./AdGuardHome/
sudo ./AdGuardHome -s install
```

The installation is now complete!

Now we switch to the browser and then to the IP address that is displayed. The displayed IP address (127.0.0.1:3000) only works directly on the Raspberry Pi. Do you want to set up AdGuard Home somewhere else? Then go to "raspberrypi:3000" in the browser.

And here we are:

We go to "Begin" and then see the second step.

You can leave the settings as they are. You just need to remember the IP addresses that tell how AdGuard Home can be accessed!

Then we set a password.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iro28268x3qnzjskgckx.png)

The next step is the device configuration, but we'll get to that later.

Let's just move on and we're at the graphical interface!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jgnf29tc1tcsvzxu4vqt.png)
By default, we already have a preconfiguration that already blocks ads. If you want more detailed instructions on this as well, write it in the comments! But if we were to list them here, it would go beyond the scope of this guide.

[CONFIGURATION IN WINDOWS 11 DEVICES]

We go to the settings, select "Wlan", then the connected wifi by going to "Properties of XXX". Then we edit the DNS server assignment by tapping "Edit" and editing the network DNS settings, switching IPv4 to "On" and typing in our IP address as "Preferred DNS".

Thank you for reading,
Schächner
Khóa học SEO IMTA
Published: 2023-08-14 07:40:01

Hiện nay có rất nhiều trung tâm đào tạo SEO uy tín tại các thành phố lớn như Thành phố Hồ Chí Minh và Hà Nội, và với sự đa dạng này bạn có thể dễ dàng tìm cho mình một khóa đào tạo SEO chất lượng. Tuy nhiên khi đến với khóa học SEO website tại IMTA bạn sẽ được đào tạo với chương trình học từ cơ bản đến nâng cao với đội ngũ giảng viện có trên 12 năm kinh nghiệm trên các nền tảng làm website.
https://imta.edu.vn/khoa-hoc-seo-website
Location: Tầng 4, Tòa Nhà Charmington La Pointe , Số 181 Cao Thắng nối dài, Phường 12, Quận 10, Hồ Chí Minh
Phone: 0896677499
Email: info@imta.edu.vn

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dm65xcnlx2z50apqnzzt.jpg)
Kubernetes has a variety of Pod controllers
Tags: kubernetes, devops, cloud, beginners
Published: 2023-08-14 07:39:18

1️⃣ ReplicationController 
2️⃣ ReplicaSet 
3️⃣ Deployment 
4️⃣ Horizontal Pod Autoscaler 
5️⃣ DaemonSet 
6️⃣ Job 
7️⃣ CronJob 
8️⃣ StatefulSet

Is there anything else you would know? 😊
How to Add and Customize Connectors in the Angular Diagram Component
Tags: webdev, angular
Published: 2023-08-14 07:29:59

Learn how to add and customize connectors in the Syncfusion Angular Diagram component. This video explains how to add a connector programmatically and using the drawing tool. It also explains how to add different types of connector segments and decorator shapes. 

The Angular Diagram is a feature-rich architecture diagram library for visualizing, creating, and editing interactive diagrams. It supports creating flowcharts, organizational charts, mind maps, and BPMN charts either using code or a visual interface. 

In this visualization tool, graphical objects are represented as nodes, providing flexibility and ease of manipulation on a diagram page. You can utilize a wide range of predefined standard shapes for convenience and consistency. Create and incorporate custom shapes, empowering users to tailor their visualizations to specific needs. 

The component includes a gallery of stencils, reusable symbols, and nodes that can be dragged onto the surface of a diagram. The overview panel improves the navigation experience when exploring large diagrams. It displays a small preview of the full diagram page that allows users to zoom and pan. 

You can design a node UI template and apply it across multiple nodes, streamlining the process and ensuring consistency throughout the diagram. This feature promotes efficiency and uniformity in the visualization creation process. 

**Product overview**: https://www.syncfusion.com/angular-components/angular-diagram

**Download an example from GitHub**: https://github.com/SyncfusionExamples/how-to-add-and-customize-the-connectors-in-the-angular-diagram-component

**Refer to the connector’s documentation on the Syncfusion Angular Diagram component**: https://ej2.syncfusion.com/angular/documentation/diagram/connectors

**Check out this online connector example of the Angular Diagram component**: https://ej2.syncfusion.com/angular/demos/#/material/diagram/connectors

{% youtube fwK8CWWBwZ4 %}