teleren/devto huggingface dataset:
🔥Wheels and Wires: Building My Arduino Self-Driving Car🚗👩‍💻
Tags: arduino, tutorial, todayilearned, ai
Published: 2024-03-03 14:00:00

## Introduction

Welcome to the "Wheels & Wires" series, where I'll document my journey of building an Arduino-based self-driving car. Join me as I dive into embedded programming and real-time systems, learning as I build, troubleshoot, and discover. I will also try to make this series like a guide, providing detailed insights, code, and solutions to the challenges encountered along the way.

&nbsp;
### Project Goals
The goal of this project is to construct a self-driving car using an Arduino, actuators, sensors, and a path-finding algorithm. There will be a camera to track the position of the car relative to a goal and detect obstacles in its path. Using data from the camera and onboard sensors, the Arduino will receive wireless instructions to control its movement.

&nbsp;
### What to Expect
In each post, I'll provide insights into the challenges I face, the solutions I come up with, and the progress I make. From coding hurdles to hardware integrations, I'll cover it all.

&nbsp;
### What's Next
Stay tuned for the next installment, where we'll dive into the details of setting up the project environment and getting started with the hardware.

***
#### About Me
{% user samdaqueen %} I'm a Software Engineer by profession and tinkerer by passion. I love everything AI, Robotics, and embedded systems. While I may be new to embedded programming, I am super excited about this project and can't wait to watch my car go zooooom! 🚗🔌🤖

Check out the code on my [GitHub](https://github.com/SamDaQueen).
Connect with me on [LinkedIn](https://www.linkedin.com/in/samreen-ansari).

Happy tinkering!
StarBoard v1.0.0
Tags: rust, tauri, product, beginners
Published: 2024-03-03 13:58:56

A few weeks ago, I found myself searching for the perfect productivity tool, blending the user-friendliness of Notion, the intuitive layout of Trello, and the automation prowess of Zapier. Surprisingly, the options I discovered were mostly paid, and open-source alternatives were either less user-friendly or demanded extensive configurations. Faced with these challenges, I recalled my experience with an old task manager CMD tool built in Rust and decided to build something new, which led to the birth of StarBoard.

##StarBoard's Origin Story
StarBoard, a name chosen hastily, might evolve in the future. The tool aims to streamline task and work management, eliminating unnecessary complexities. The vision includes automating repetitive steps, integrating with various platforms, and providing an efficient solution for task management.

##Development Approach
To address concerns about privacy, data storage, and server setup, I decided to build StarBoard as a desktop software, focusing on Windows users. As a Windows user myself, this choice not only aligns with my preferences but also streamlines the development process.

##Current Status
StarBoard has been pre-released with fundamental features allowing users to create collections and group tasks within them. Users can easily change the status of tasks from pending to completed or mark them as in progress. While this pre-release is not stable, the upcoming version 1.1.0, expected by the end of June, will offer a more polished and stable experience.



![StarBoard Screenshot](https://res.cloudinary.com/dxraggwp4/image/upload/v1709318505/StarBoard/panut0n6rrqslegnftwy.png)
![StarBoard Screenshot](https://res.cloudinary.com/dxraggwp4/image/upload/v1709318505/StarBoard/sevahvi8iiwiulli2x4k.png)
![StarBoard Screenshot](https://res.cloudinary.com/dxraggwp4/image/upload/v1709318505/StarBoard/clf4t5twwmnaxfcntg4s.png)
![StarBoard Screenshot](https://res.cloudinary.com/dxraggwp4/image/upload/v1709318505/StarBoard/li2yxogni3fxecxz4ngq.png)

##Contribution and Collaboration
Building a project from scratch is a challenging task, and I invite anyone interested to join and contribute to StarBoard's development. Every contribution is valuable, whether it's code, UI improvements, or feedback. Together, we can shape StarBoard into a robust and user-friendly productivity tool.

##Get Involved
If you're interested, you can explore the pre-released version on GitHub. Feel free to test it out, provide feedback, or contribute to its development.

[StarBoard GitHub Repository](https://github.com/JoelJaison394/StarBoard)

{% embed https://youtu.be/LPrJtdPjS4k %}

{% embed https://dev.to/joeljaison394/a-cliche-rusty-project-built-using-rust-8oi %}
guerrilla — Your Personal Censorship Circumvention Toolbox
Tags: security, privacy, linux, container
Published: 2024-03-03 13:43:11

*[The post banner](https://github.com/de4thr0ll/guerrilla/blob/main/img/guerrilla-banner-512x215.png) is licensed under CC BY 4.0.*

> This post will be unlike all of my previous posts. Not a guide, but rather a small unstructured announcement.

For those who are oppressed by inhumane regimes, for those who seek truth.

As state censorship continues to strike across Asia with greater power, we, regular citizens who can't stand digital isolation, seek opportunities to get access to restricted online resources.

Recently, all of this crap started to hit me more and more.

That's why I decided to set up a set of proxies, and start gathering censorship circumvention techniques pioneered by folks at China, as well as some other things in a single project for myself and my friends, but it may be useful for anyone.

---

So, introducing guerrilla
{% embed https://github.com/de4thr0ll/guerrilla %}

It's a small Docker Compose project, a collection of easy-to-deploy censorship circumvention tools for digital guerrillas, as I call it for fun.

The goal is to have a simple interface for deploying and configuring such tools.

Right now, it contains only a shadowsocks-rust image and a Fedora image with misc tools like shadowsocks config QR code generator. More circumvention methods, misc tools, and documentation will be added in future, hopefully.

Yes, shadowsocks is not perfect, but it works for now.

---

I think, from now on, there will be more privacy-related posts on my profile.

🤘Stay safe.
What solutions are you using for CI/CD in your cloud-based project?
Tags: cicd, devops
Published: 2024-03-03 13:37:00

How do you manage 100s of microservices, multiple branches and environments in your project? Atlassian Bitbucket? Gitlab? Github actions? In-house pipelines? Please add any other variants in comments as well.

PS we (by the way) built the internal server-less ci/cd system on top of AWS CodePipeline and AWS CodeBuild and described our experience here - [Story of CI/CD in our startup: from a few micro-services to full-blown multi-tenant, multi-account, multi-region systems](https://medium.com/@hello_orion/story-of-ci-cd-in-our-startup-from-a-few-micro-services-to-full-blown-multi-tenant-multi-account-5a3332d7092c). 
We are really interesting to know you experience.
Journey into GoLang: Understanding Go by solving LeetCode problems
Tags: go, leetcode, beginners, learning
Published: 2024-03-03 13:09:49

## Introduction:
Welcome to the first post of my "Journey into GoLang" series! In this series, I'll be documenting my exploration of GoLang programming through solving LeetCode problems. Today, we kick off our journey by solving the classic Two Sum problem.

## The Problem Description:
Given an array of integers and a target integer, find the indices of two numbers that add up to the target.

## Initial Solution
```go
func twoSum(nums []int, target int) [2]int {
  result := [2]int{}
  for i := 0; i < len(nums); i++ {
    for j := 0; j < len(nums); j++ {
      if i == j {
        continue;
      }

      if nums[i] + nums[j] == target {
        result[0] = j;
        result[1] = i;
      }
    }
  }
  return result;
}
```

In our initial approach, we took a straightforward route. We add nested loops to iterate through the array and find the desired indices. While this solution worked, it had a time complexity of O(n^2), making it suboptimal for larger datasets.


### Optimized Solution
```go
func optimizeTwoSum(nums []int, target int) [2]int {
  result := [2]int{}
  m := make(map[int]int)
  for i := 0; i < len(nums); i++ {
    m[nums[i]] = i
  }
  
  for i := 0; i < len(nums); i++ {
    if _, ok := m[target - nums[i]]; ok && m[target - nums[i]] != i {
      result[0] = i
      result[1] = m[target - nums[i]]
      break
    }
  }
  return result
}
```

- We create a `hash map`, hash map keys are the values of nums and the hash map value is an index of the value of nums. 
- We use the `hash map` to find the complement of the target.
- Complement means the difference between the target and the value of nums (x + y = t => x = t - y).
- If the complement exists in the hash map, we return the index of the complement and the index of the value of nums.
- Map returns two values, the first value is a value stored under the key, and the second value is a boolean indicating whether the key exists or not.
- If the requested key doesn’t exist, we get the value type’s zero value. In this case, the value type is int, so the zero value is 0. The second value will be false.

[Github Code Link](https://github.com/shareef99/go-leetcode-problems/blob/main/problems/001-two-sum/main.go)

**Join the Journey:**
This post marks just the beginning of our journey into GoLang and algorithmic problem-solving. Stay tuned for more insights, challenges, and optimizations as we delve deeper into the world of programming.

**Conclusion:**
As we conclude our first installment of the **"Journey into GoLang"** series, I invite you to learn with me. Together, let's understand GoLang, one LeetCode problem at a time.

Thank you for joining me on this journey, and I look forward to sharing more discoveries with you in the upcoming posts!

Social Links
- Twitter: [@shareef99\_](https://twitter.com/shareef99_)
- LinkedIn: [Nadeem Shareef](https://www.linkedin.com/in/nadeem-shareef/)
- Github: [shareef99](https://github.com/shareef99)
Best Digital Marketing Company in Delhi
Published: 2024-03-03 13:08:07

Digital Technology Solutions the [best digital marketing company in Delhi](https://www.digitechn.com/
) has made its presence felt in the market. With a vision to create a revolution in the ocean of Digital Marketing, Website Development, and Branding, DigiTechn has completed projects in digital marketing, logo designing, and e-commerce. It is a place where all your requirements for business branding and promotion will be met, and that too with state-of-the-art technology.
"Embarking on My AI Engineering Journey: Let the Learning Begin! Gratitude to CodeBasis for AI Engineer Roadmap Week 1 Update"
Tags: ai, aiengineering, begineer, journey
Published: 2024-03-03 13:04:57

🚀 Excited to embark on an AI Engineer journey! 🌟

Hey LinkedIn fam! 👋 I'm thrilled to announce that I'm diving headfirst into a comprehensive AI Engineer roadmap provided by CodeBasis on YouTube! 🎉 Over the next 10 months, I'll be dedicating my weekends to mastering the intricacies of AI engineering. 🤖💡

With weekly tasks outlined by CodeBasis, I'll be sharing my progress every Saturday, detailing the insights gained, challenges overcome, and the resources utilized. 📚 Stay tuned to witness my learning journey unfold! 🚀

But wait, there's more! On Sundays, I'll be laying out my plan for the upcoming week, setting goals, and strategizing how to tackle the next set of tasks effectively. 📅✨

Throughout this adventure, all my code files, project updates, and reflections will be documented on my GitHub profile and blog site. 🖥️ Feel free to join me on this quest for knowledge and growth! 🌱

While juggling college semester exams, I'm committed to completing this 8-month course in around 10 months. 💪 My ultimate goal? Securing an internship where I can immerse myself in real-world AI projects and gain invaluable industry experience. 🌐

Here's to a journey filled with learning, challenges, and growth! 🌟 Let's connect, collaborate, and inspire each other along the way. 🚀

Don't forget to catch me at 10:30 Am (Saturday and Sunday )for the latest updates on my programming journey! Let's continue to learn, grow, and inspire together! 💻✨
Bringing the Retro Vibes Back: A Journey with HTML Marquee
Tags: marquee, webdev, beginners, html
Published: 2024-03-03 12:57:43

**Introduction:**
In the ever-evolving world of web development, where sleek and modern designs dominate, there's something charming about the classics. Today, let's embark on a journey back to the early days of the web, where animated text was all the rage. Our destination? The HTML `<marquee>` tag – a blast from the past that can infuse a touch of nostalgia into your web projects.

**Step 1: Rediscovering `<marquee>` - The Hidden Gem:**
As developers, we are often immersed in cutting-edge technologies, but sometimes it's refreshing to explore the forgotten corners of HTML. Enter `<marquee>`. This seemingly simple tag carries the power to animate text horizontally or vertically, creating a dynamic visual impact on your webpage.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h7ky6q3wz9mgiw0fs5lv.png)


Here, our journey begins with a basic horizontal scrolling marquee displaying the timeless "Hello, World!" message.

**Step 2: Adding Flair with Attributes:**
The `<marquee>` tag comes with a set of attributes to customize the animation. Let's spice things up by adjusting the speed, direction, and behavior of our marquee.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qk7dz3tc95csqr9t5isz.png)

Now, our marquee alternates its vertical scroll direction, creating a captivating effect. Play with attributes like `scrollamount`, `scrolldelay`, and `direction` to tailor the animation to your liking.

**Step 3: Embracing the Responsive Design Era:**
While `<marquee>` brings back a touch of the past, it's crucial to ensure compatibility with modern design principles. Let's explore how to make our marquee responsive and visually appealing.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ajyyzpjqb6yaof9w0x69.png)

By applying some CSS styles, we ensure our marquee adapts to different screen sizes gracefully. The `white-space: nowrap` property prevents text wrapping, while `width: 100%` ensures it spans the entire width of its container.

**Conclusion:**
Our journey into the world of HTML `<marquee>` has been both nostalgic and enlightening. While it may not be the go-to choice for modern web design, there's a certain charm in incorporating a hint of the past into our projects. Whether you use it sparingly for announcements or embrace it wholeheartedly for a retro-themed page, the `<marquee>` tag adds a unique touch to your development repertoire.

As we bid farewell to our animated text adventure, remember that in the vast landscape of web development, there's always room for a bit of whimsy and a nod to the classics. So, go ahead, sprinkle a little marquee magic into your next project and let the scrolling begin!
Rubyist Survey: Ruby ri documentation viewer
Tags: ruby, documentation, ri
Published: 2024-03-03 12:51:43

---
title: Rubyist Survey: Ruby ri documentation viewer
published: true
description: 
tags: Ruby, documentation, ri
---
Rubyists, how do you use ri? Very often? Sometimes? Occasionally? Rarely? Not at all? Never heard of it?

Hint: Type ‘ri --help’
Python MySQL
Published: 2024-03-03 12:30:53

Title : [Python MySQL](https://pythonkb.com/python-mysql/)

1. **Python MySQL**: Using [Python](https://pythonkb.com/category/python/) to interact with MySQL databases.

2. **Get Started**: Ensure MySQL is installed, Python MySQL library is installed (`mysql-connector-python` is common), and a MySQL server is running.

3. **Create Database**:
   ```python
   import mysql.connector

   mydb = mysql.connector.connect(
       host="localhost",
       user="username",
       password="password"
   )

   mycursor = mydb.cursor()

   mycursor.execute("CREATE DATABASE mydatabase")
   ```

4. **Create Table**:
   ```python
   mycursor.execute("USE mydatabase")
   mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")
   ```

5. **Insert**:
   ```python
   sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
   val = ("John", "Highway 21")
   mycursor.execute(sql, val)
   mydb.commit()
   print(mycursor.rowcount, "record inserted.")
   ```

6. **Select**:
   ```python
   mycursor.execute("SELECT * FROM customers")
   result = mycursor.fetchall()
   for row in result:
       print(row)
   ```

7. **Where**:
   ```python
   sql = "SELECT * FROM customers WHERE address = 'Highway 21'"
   mycursor.execute(sql)
   result = mycursor.fetchall()
   for row in result:
       print(row)
   ```

8. **Order By**:
   ```python
   sql = "SELECT * FROM customers ORDER BY name"
   mycursor.execute(sql)
   result = mycursor.fetchall()
   for row in result:
       print(row)
   ```

9. **Delete**:
   ```python
   sql = "DELETE FROM customers WHERE address = 'Highway 21'"
   mycursor.execute(sql)
   mydb.commit()
   print(mycursor.rowcount, "record(s) deleted")
   ```

10. **Drop Table**:
    ```python
    sql = "DROP TABLE customers"
    mycursor.execute(sql)
    print("Table dropped successfully")
    ```

11. **Update**:
    ```python
    sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Highway 21'"
    mycursor.execute(sql)
    mydb.commit()
    print(mycursor.rowcount, "record(s) updated")
    ```

12. **Limit**:
    ```python
    sql = "SELECT * FROM customers LIMIT 5"
    mycursor.execute(sql)
    result = mycursor.fetchall()
    for row in result:
        print(row)
    ```

13. **Join**:
    ```python
    sql = "SELECT customers.name AS customer, products.name AS product FROM customers INNER JOIN products ON customers.product_id = products.id"
    mycursor.execute(sql)
    result = mycursor.fetchall()
    for row in result:
        print(row)
    ```

Ensure to replace placeholders like `'localhost'`, `'username'`, `'password'`, `'mydatabase'`, etc., with your actual MySQL server credentials and database details. It's also important to include proper error handling in your code for robustness.
Ensure the Conform useForm hook resets a form when the record id changes
Tags: react, form, conform
Published: 2024-03-03 12:29:47

Are you trying to implement a simple embedded edit form in using [Conform](https://conform.guide/)? A form that lists all the records from a database, then when you click on one of the records, it should display the edit form as an outlet? And is your problem that when you display the form, the initial values do not got reset on the client side?

So what you need is to do an "Automatic form reset when id is changed" which is documented in the [Tips](https://conform.guide/api/react/useForm#tips) section of useForm.

Here is the code that you are likely to be using. With this code, whenever your display an article the form will not be reset with the fields from the Article object.

```ts
interface Article {
  id: string;
  title: string;
  content: string;
}

function EditArticleForm({ defaultValue }: { defaultValue: Article }) {
  const [form, fields] = useForm({
    id: `edit-article`,
    defaultValue,
  });

  // ...
}
```

What you need is to make sure the "id" field of the form gets updated as follows:

```ts
interface Article {
  id: string;
  title: string;
  content: string;
}

function EditArticleForm({ defaultValue }: { defaultValue: Article }) {
  const [form, fields] = useForm({
    id: `edit-article-${defaultValue.id}`,
    defaultValue,
  });

  // ...
}
```

Just adding the `${defaultValue.id}` bit will ensure the form initial values will be reset and reflect the values of the Article you want to edit.

Once you know it, it does make sense!
Important terminology that you need to know to learn CNN.
Tags: machinelearning, deeplearning, beginners, cnn
Published: 2024-03-03 12:01:37

- **CNN**: Convolutional neural network. That is a network that has at least one convolutional layer. A typical CNN also includes other types of layers, such as pooling and dense layers.

- **Convolution**: The process of applying a kernel (filter) to an image

- **Kernel/filter**: A matrix that is smaller than the input, used to transform the input into chunks

- **Padding**: Adding pixels of some value, usually 0, around the input image

- **Pooling**:  The process of reducing the size of an image through downsampling. There are several types of pooling layers. For example, average pooling converts many values into one by taking the average. However, max-pooling is the most common.

- **Max pooling**: A process in which many values are converted into a single value by taking the maximum value from among them.

- **Stride**: the number of pixels to slide the kernel (filter) across the image.

- **Downsampling**: The act of reducing the size of an image.


Let me know your feedback in the comments🙂. 
Happy Learning.😊
Unleashing YTStatsAnalyzerGo: A Go-Powered Dive into YouTube Channel Insights
Tags: go, youtube, dataanalysis, opensource
Published: 2024-03-03 11:46:15

**Introduction:**

Dive into the world of data-driven YouTube channel insights with YTStatsAnalyzerGo, an open-source YouTube Channel Statistics Analyzer crafted in Go. Uncover the power of the YouTube Data API v3 as we journey into fetching channel statistics and analyzing top videos based on views, likes, and comments.

**Getting Started:**

_Prerequisites:_
Before embarking on your data exploration with YTStatsAnalyzerGo, make sure you have Go installed on your machine. Additionally, secure a Google Cloud API key for YouTube Data API v3.

**Installation:**

- Clone the Repository:

```
git clone https://github.com/yourusername/YTStatsAnalyzerGo.git
cd YTStatsAnalyzerGo
```

- Add Your API Key:

Insert your Google Cloud API key into the 'apiKey' constant in 'main.go':

```
const apiKey = "YOUR_API_KEY"
```

- Run the Application:

```
go run main.go
```

**Usage:**

- Fetching Channel Statistics:
Run the command to fetch and display channel statistics for a specified channel:

```
go run main.go
```

- Analyzing Top Videos:
Analyze top videos based on views, likes, and comments. Results can be printed to the console or saved to a CSV file.
_Examples:_

- Analyzing most viewed videos:

```
go run main.go -top=views -count=10
```

- Analyzing least viewed videos:

```
go run main.go -top=views -count=10 -asc
```

- Saving to CSV:
Save results to a CSV file using the '-csv' flag:

```
go run main.go -top=likes -count=5 -csv=output.csv
```

**Customization:**

- Modifying Output:
Customize the output format by tweaking the 'getTopVideosCSV' function in 'main.go'.

_Example:_ Changing CSV Format:
Modify the CSV format by updating the 'getTopVideosCSV' function. For instance:

```
result.WriteString("Rank,Title,Views,Likes,Comments\n")
result.WriteString(fmt.Sprintf("%d,\"%s\",%d,%d,%d\n",
    i+1, video.Snippet.Title, video.Statistics.ViewCount, video.Statistics.LikeCount, video.Statistics.CommentCount))
```

**Contributing:**

Contributions are more than welcome! Feel free to fork the repository and submit a pull request, as we collectively enhance YTStatsAnalyzerGo.

**Embark on Your Data Odyssey:**

Explore, analyze, and elevate your understanding of YouTube channel dynamics with YTStatsAnalyzerGo. Let's unravel the secrets hidden in data and empower content creators!