teleren/devto huggingface dataset:
I parsed 968 launches from /r/SideProject and analyzed them with Claude 3 Opus
Tags: reddit, sideprojects
Published: 2024-03-25 15:53:41

## Data Overview
I searched for all posts from this subreddit that contained these strings: "I built", "I made an alternative to", "I created a clone of".

Most posts are <=1 year old.

Due to Reddit API's restrictions, the total number of posts analyzed was 968. I wish I could parse more.

## List of Clones of Popular Apps
- Loom (screen recording app): 6‼
- Typeform (form builders): 7‼
- Resume/CV apps: 3
- Pastebin: 5
- Habit trackers: 12‼
- Link in bio: 5
- Screenshot making tools: 3
- Todo lists: 3
- Bookmarking tools: 8
- Website builders: 29 ‼‼
- Notes taking tools: 10‼ classic
- Health, fitness, and wellness apps: 19‼
- Feedback gathering tools: 10‼
- Time tracking and invoicing tools: 4
- Patreon alternatives: 2
- Twitter: 16‼‼‼ wtf?
- Product Hunt: 6‼
- Pomodoro timers: 1

## Categories

- Language learning: 4
- Directory/list: 7
- Chrome extension: 21
- Crypto or decentralized: 5
- Finance: 15
- Dev tool: 26
- Self-hosted: 14
- Growth or marketing tool: 11
- Open-sourced: 37

## Some Stats
B2C: 69.8% ↔ B2B: 30.2% (please do b2b!!!)

AI tools: 108 (10.8%!)

## Titles
**Most Boring Title:** "How I stumbled upon my startup idea: A casual chat"

**Most Inspiring Title:** "I taught people to code for 10 years. So I started my own learning platform for fun and it got REALLY BIG."

**Least Catchy Title:** "I made an alternative free WordPress theme directory"

**Most Catchy Titles:**

"I made a multiplayer game, got beaten at my own game, then made a bot for my game so I could finally win"

"I made a chrome extension that makes music sound like it's coming from another room"

"Too lazy to post daily, so built an app to do it instead"

---

That's all 🙂 The post was originally published on my 𝕏 [https://twitter.com/alexanderisorax/status/1772249784251777384](https://twitter.com/alexanderisorax/status/1772249784251777384)
How to Install and Use Podman on Debian 12
Tags: podman, debian
Published: 2024-03-25 15:48:20

To install and use Podman on Debian 12, follow the steps below:
Step 1 : Start by updating your package list:

```
sudo apt update
```
Step 2 : Proceed with the installation of Podman:
```
sudo apt install podman
```
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x9jnwh6epf8nnpmzcczl.png)
Step 3 : Ensure that Podman is installed correctly by checking its version:
```
podman --version
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enmj3dgz46oe2e9ek1sk.png)
Step 4 : Test Podman by running a basic Ubuntu container:
```
podman run -it ubuntu /bin/bash
```

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gm540tfabdncitwt9t8l.png)
This command will pull the Ubuntu image if it's not already available and starts a container where you can execute commands.
Step 5 : Once you've finished testing, exit the container by typing:
```
exit
```
Congratulations! You have successfully installed Podman on your Debian 12 system.
References

- [Debian 12 Guides](https://devtutorial.io/debian-12-guides-p3118.html)
Where do I see myself in 5 years?
Tags: codenewbie, softskills
Published: 2024-03-25 15:45:12

This is a typical question in any interview, but -sometimes- it is very useful to ask yourself the same question because when you are not looking for a job, you don’t have to push yourself for a correct answer. In fact, there is no correct answer at all. I invite you to think about your future, what you want to do or what you need to learn to get there.  

As I mentioned above, I don’t want to write about how to answer this question. If you are looking for advice for this interview common question, you will find a lot of posts over the internet, or you could ask ChatGPT. I invite you to meditate about your life instead. 

## What do you really want? 

I want to be a CTO. Therefore, I must work on that from now, so as in 5 years I will be able to ask for it. I think I am on a right track. However, if I never think on that, I could be missing something. 

Imagine you want to be a gaming developer and you are studying Data analysis. Are you in the right path or not? You never know till you think about it.  

Any CTO must know everything: Business, investment, finance, HR, technologies and trends. They must be clever and extroverted. They want challenges. And -of course- they want to be leaders.  

I am following the plan I have designed for myself. As a result, I think I don’t have to focus on any technology. I must be open and absorb all I can, because a CTO has a lot of knowledge. Besides, I must pay special attention to increase as many soft skills as possible, because I will need them above all. 

Even though I know I will have to jump a lot of stones and make some sacrifices, I will do it anyway as I want it, and that is the main reason for having a plan. 

When I must face a new problem; learn a trend technology; or improve a soft skill; I know if it is a wasted time or not because I know what I need to be a CTO. If it is something essential I must do it right now. Otherwise, it could wait. Time is finite, and I need to distribute in the best way possible to be ready in 5 years. 

## What happen if I fail? 

12 years ago, I wanted to be a script writer. It was something completely different. Those days I had another plan which failed. The truth is It doesn’t matter; any plan can fail. The intention is always the meditation and try to think pros and cons. Then you must trust on yourself and start to walk your track. What happen next is only life. **Enjoy it! **
Uppercase table names in Spring Boot
Tags: springboot, jpa, hibernate, java
Published: 2024-03-25 15:37:25

In Spring Boot / Hibernate, the table name is derived from the entity name. What must our naming strategy look like **to translate all table names to uppercase?**

Without further configuration, the physical name of the entity is converted to lowercase with underscores - so our class `LineItem` becomes the table `line_item`. We could try to store the adjusted name at each table with `@Table(name = "LINE_ITEM")` to overwrite the physical name - but would still need to change the naming strategy, because otherwise it would be changed back to lowercase after all.

Therefore the best approach is to provide the **transformation for all table names with a dedicated naming strategy**. Additional information within the `@Table` annotation is no longer necessary.

```java
public class CamelCaseToUppercaseTablesNamingStrategy extends CamelCaseToUnderscoresNamingStrategy {

    private Identifier adjustName(final Identifier name) {
        if (name == null) {
            return null;
        }
        final String adjustedName = name.getText().toUpperCase();
        return new Identifier(adjustedName, true);
    }

    @Override
    public Identifier toPhysicalTableName(final Identifier name, final JdbcEnvironment context) {
        return adjustName(super.toPhysicalTableName(name, context));
    }

}
```
_&nbsp; Customization of all table names using a custom naming strategy_

Our naming strategy extends from `CamelCaseToUnderscoresNamingStrategy` so that all other methods (e.g. for the field names) still apply. The table name is first changed to lowercase with underscores, **and then altered to uppercase** in `adjustName`.

All adjusted identifiers are automatically created with `quoted = true`. This prevents the database from changing the table name and the name is taken over exactly. Finally only one entry in our `application.yml` / `application.properties` is missing.

```properties
spring.jpa.hibernate.naming.physical-strategy=io.bootify.my_app.config.CamelCaseToUppercaseTablesNamingStrategy
```

**With this, Hibernate / Spring Data translates all physical names to uppercase with underscores.** We could also override the `toColumnTableName` method if we also want to translate the field names as well. With a little adjustment, camel case would also be possible as output.

Bootify allows to create any custom database schema for your next Spring Boot application - directly in the browser, without registration. **In the Professional plan, four additional Naming Strategies are available for selection** and directly provide the configured, executable application.

[**&raquo; See Features and Pricing**](https://bootify.io/pricing.html)
What are your goals for week 13 of 2024?
Tags: discuss, motivation
Published: 2024-03-25 15:35:02

It's week 13 of 2024. Friday is good Friday. 

## What are your goals for this week? 

- What are you building? 
- What will be a good result by week's end?
- What events are happening this week? 
  * any suggestions for in person or virtual events?
- Any special goals for the quarter?


### Last Week's Goals
 

- [:white_check_mark:] Continue Job Search. 
- Project work 
   * [:x:] Got an idea to revive an old inventory project. Need to make progress. Did a little work. back at it today.
- [:x:] Blog 
- Events 
  * [:x:]Thursday Virtual Coffee
  * Attended a couple live streams but failed to log them, need to get better at that.
- [:white_check_mark:] This is Virtual Coffee's month of get job ready. I'll run a goal setting thread on Slack. 

 
### This Week's Goals

 

- Continue Job Search. 
- Project work 
   * Got an idea to revive an old inventory project. Need to make progress.
- Blog 
- Events 
  * Wednesday DevRel Meetup with Ciare Carey & Bekah Hawrot Weigel.
  * Thursday Virtual Coffee 
- need to track online events, just write them down.
- This is Virtual Coffee's month of get job ready. I'll run a goal setting thread on Slack. 
- Work on The DEV Frontend Challenges.

{% embed https://dev.to/devteam/join-our-first-community-challenge-the-frontend-challenge-8be %} 



### Your Goals for the week 

Your turn what do you plan to do this week? 

- What are you building? 
- What will be a good result by week's end?
- What events are happening any week? 
  * in person or virtual?


```html
-$JarvisScript  git commit -m "Time for accountability"
```
Camp Activities Inquiry from
Tags: frontendchallenge, devchallenge, css
Published: 2024-03-25 15:33:53

_This is a submission for DEV Challenge v24.03.20, CSS Art: Favorite Snack._
[](https://suryakanta-mohanty.github.io/Camp-Activities-Inquiry-dev.to-challenge/)**This is responsive **
## Inspiration 
<!-- What snack are you highlighting today? -->

## Demo
<!-- Show us your CSS Art! You can directly embed an editor into this post (see the FAQ section of the challenge page) or you can share an image of your project and share a public link to the code. -->

## Journey
<!-- Tell us about your process, what you learned, anything you are particularly proud of, what you hope to do next, etc. -->

<!-- Team Submissions: Please pick one member to publish the submission and credit teammates by listing their DEV usernames directly in the body of the post. -->

<!-- We encourage you to consider adding a license for your code. -->

<!-- Don't forget to add a cover image to your post (if you want). -->


<!-- Thanks for participating! -->
How to fix this problem
Published: 2024-03-25 15:22:39

specialictsThunk.js:9 Warning: Internal React error: Expected static flag was missing. Please notify the React team.
    at Table (http://localhost:3000/static/js/src_components_UI_Table_jsx-src_utils_constants_columns_js.chunk.js:299:12)
    at div
    at http://localhost:3000/static/js/bundle.js:19091:66
    at Box (http://localhost:3000/static/js/bundle.js:51700:72)
    at div
    at http://localhost:3000/static/js/bundle.js:19091:66
    at Box (http://localhost:3000/static/js/bundle.js:51700:72)
    at http://localhost:3000/static/js/bundle.js:19091:66
    at Specialists (http://localhost:3000/static/js/src_pages_admin_specialists_Specialists_jsx.chunk.js:51:63)
    at Suspense
    at Suspense (http://localhost:3000/static/js/bundle.js:14378:3)
    at RenderedRoute (http://localhost:3000/static/js/bundle.js:106081:5)
    at Outlet (http://localhost:3000/static/js/bundle.js:106685:26)
    at div
    at http://localhost:3000/static/js/bundle.js:19091:66
    at Box (http://localhost:3000/static/js/bundle.js:51700:72)
    at http://localhost:3000/static/js/bundle.js:19091:66
    at AdminLayout
    at ProtectedRoute (http://localhost:3000/static/js/bundle.js:14295:3)
    at RenderedRoute (http://localhost:3000/static/js/bundle.js:106081:5)
    at RenderErrorBoundary (http://localhost:3000/static/js/bundle.js:106028:5)
    at DataRoutes (http://localhost:3000/static/js/bundle.js:104667:5)
    at Router (http://localhost:3000/static/js/bundle.js:106706:15)
    at RouterProvider (http://localhost:3000/static/js/bundle.js:104454:5)
    at AppRoutes
    at App
    at ThemeProvider (http://localhost:3000/static/js/bundle.js:19143:50)
    at Themes (http://localhost:3000/static/js/bundle.js:5813:3)
    at Provider (http://localhost:3000/static/js/bundle.js:159671:3)
    at PersistGate (http://localhost:3000/static/js/bundle.js:120990:5)
    at LocalizationProvider (http://localhost:3000/static/js/bundle.js:57643:19)
A brief explanation of eager loading in Laravel
Published: 2024-03-25 15:22:27

Eager loading in Laravel is a technique used to solve the "N+1 query problem" in database interactions, particularly with ORM (Object-Relational Mapping) tools like Eloquent. The N+1 query problem occurs when your application makes one query to retrieve the initial set of records (for example, posts), and then for each record, it makes another query to fetch related records (for example, comments on each post). If you have N posts, this results in **1 query to fetch the posts plus N additional queries to fetch comments for each post**, hence the name "N+1 query problem."

Eager loading solves this problem by retrieving the related records for all of the initial records in a single query. **This means get all comments related to posts instead of n number of queries** This significantly reduces the number of queries made to the database, improving the performance and scalability of your application.

###Simple Example without Eager Loading

Check this code. This is our controller function

```
public function index()
    {
        $posts = Post::all();

        foreach ($posts as $post) {
            foreach ($post->comments as $comment) {
                echo $comment->body;
            }
        }
    }
```

We have checked this with debug tool. And here is result.


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

This database has 245 posts


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

So inside every iteration inside the loop Laravel runs a query and get comments for the post. So it means 245 queries for 245 posts. This is default behavior and it is called lazy loading.

###Implementing Eager Loading

You can use eager loading to preload the Comments for all Posts in a single query using the with() method:

```
public function index()
    {
        $posts = Post::with('comments')->get();

        foreach ($posts as $post) {
            foreach ($post->comments as $comment) {
                echo $comment->body;
            }
        }
    }
```

See now it is just 4 queries.


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

It gets all post id's and get comments with a single query. This is called eager loading.
Download Google Docs as a PDF from the shared link
Tags: productivity, automation, tutorial, tooling
Published: 2024-03-25 15:16:11

Have you ever shared a Google Docs document and wanted users to download it as a PDF directly instead of manually opening and downloading it as a PDF? Generally for such use cases, manually exporting the document as a PDF and uploading it to a separate location is the way. This can be tedious, especially if you frequently update the document.

There's a clever trick to bypass this extra step! Here's how to automatically download the latest version of your Google Doc as a PDF directly from the shared link:

#### Find your Google Doc's shareable link:

Open your Google Doc.
Click "File" in the top menu bar.
Select "Share" and then "Get shareable link."


![Google Docs Share popup](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uo21soos72wryqykfyik.png)

#### Modify the link for PDF download:

The standard shareable link looks something like this:

```
https://docs.google.com/document/d/<file-id>/edit?usp=sharing
```

Here's the magic touch: Replace edit with `export?format=pdf` in the URL. This transforms the link into a direct PDF download for your document.

For example, if your original link was:

```
https://docs.google.com/document/d/123ABCdeF/edit?usp=sharing
```
The new PDF download link would be:

```
https://docs.google.com/document/d/123ABCdeF/export?format=pdf
```

Now, anyone with this modified link will automatically download the latest PDF version of your Google Doc whenever they click it!

## A use-case for software engineers

Let's talk about a real-world scenario. Imagine you have a personal website showcasing your skills and experience. You also offer your resume as a downloadable document. Traditionally, you might upload a static resume in PDF format to your website.

The problem? When you update your resume with new achievements or work experiences, you also need to manually re-upload a new PDF file. This can be inconvenient and lead to outdated versions lingering online.

This Google Docs trick solves that problem!

By using the modified shareable link for your resume doc, you can ensure visitors always download the latest version whenever they click the link on your website. No more manual uploads and your visitors always have the most up-to-date version of your resume!

This approach is ideal for any frequently updated Google Docs you want to share as a PDF, like project reports, presentations, or even client contracts. The same can be achieved for Google Sheets, Google Slides or any Google Workspace documents. Moreover, you can export to various other formats like `.docx, .epub`. You can refer to all supported formats in this [Google Workspace API document](https://developers.google.com/drive/api/guides/ref-export-formats).

**Bonus Tip**: Consider using a URL shortener like [Linkly](https://linklyhq.com/) to make the downloadable link more manageable and visually appealing and even provide analytics on the link's usage.
Managing Overdue Tasks
Published: 2024-03-25 15:04:36


## Introduction

Getting better at estimating how long tasks will take is a skill that develops as you gain more experience in your career, especially when working with a team or company for a long time. However, even with careful planning, unexpected challenges can pop up, causing delays and potentially missing deadlines.

## A Common Approach: Finish It at All Costs

When faced with a deadline, the first solution many of us consider is to work extra hours or through the weekend. We might think that failing to complete the task on time means we've let others down, broken a promise, or even fear it could reflect negatively on our next performance review.

But this strategy, even if it helps in the short term, isn't healthy and leads to several problems:

1. **Higher Chances of Mistakes:** Rushing to finish and working without enough rest increases the likelihood of errors. I'm sure that most people will create more bugs when they haven't had a good night's sleep compared to those who have.
2. **Reduced Quality and Higher Costs:** To meet deadlines, we might skip necessary steps such as writing good tests, doing enough manual testing, or making quick fixes that don't align with the project's overall design. These "technical debts" can lead to potential problems and costs in the future.
3. **Missed Learning Opportunities:** Failing to meet an estimate is a chance to learn and improve. However, if we just work longer hours without discussing the issue with the team, we miss out on this learning. Plus, it sets unrealistic expectations for future projects, leaving us in a similar situation again.

## A Better Strategy: Communicate

The most effective way to handle these situations is to talk to your team or project manager as soon as you realize the task might not meet the deadline. This could be during a daily check-in, a message, or the next scheduled meeting. Communicate the challenges clearly and make sure everyone understands the situation.

Next steps can include:

1. **Adjusting the Plan:** The manager may agree to extend the deadline once they understand the situation, allowing you to complete the work without undue stress.
2. **Addressing Immediate Deadlines:** If the deadline can't be moved, you can discuss the issues highlighted earlier (like the risk of errors and lower quality) to help decide the best course of action together.

## Conclusion

Meeting deadlines is important, but we should also think about how our choices affect things in the long run. Trying to finish things fast or working too hard might seem like good ideas at first, but they can lead to more mistakes, lower-quality work, and missed chances for the team to learn and grow.

Talking openly about any problems and being clear about delays help make a better work environment and lead to a more lasting way of managing projects.

---
_Originally published at [Managing Overdue Tasks]
(https://aminrb.me/managing-overdue-tasks/)_
Updating Elasticsearch with P12 Certificate
Tags: devops, tutorial, docker, elasticsearch
Published: 2024-03-25 14:54:04

🔍 **Background:**

For updating Elasticsearch to versions 17.10 and 17.5 with a P12 certificate, you can follow the steps outlined below.

### Steps:

1. Access Docker Container:

```
docker exec -it {container_name} bash
```

2. Generate CA Certificate:

```
/usr/share/elasticsearch/bin/elasticsearch-certutil ca
```

- Enter a file name for the CA certificate in P12 format (e.g., New_Cer.p12)
- Specify the cipher for SSL encryption.

3. Sign the new Certificate:


```
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca {First_created_file}.p12 --ca-pass "" --days {Date_Of_Expiration} --out "{Output_name}.p12" --pass ""
```

4. Replace SSL Certificate:


```
rm -rf /usr/share/elasticsearch/config/cert/elastic-stack-ca.p12
```

```
mv {Location_Of_Created_File} /usr/share/elasticsearch/config/cert/elastic-stack-ca.p12
```

5. Update File Permissions:


```
sudo chown {Username}:{Group} /usr/share/elasticsearch/config/cert/elastic-stack-ca.p12
```

6. Check SSL Validation:

- Dev Tool in Kibana:

```
GET /_ssl/certificates
```

- Check SSL Expiry Date:


```
curl -X GET http://{IP_Address}:9200/_ssl/certificates -u {Username}:{Password} | jq '.[-1].expiry' | cut -d '"' -f 2
```

🚀 **Completion:**

By following these steps, you would have successfully updated Elasticsearch to the specified versions and configured it with a P12 certificate for secure communication.

Good luck with your Elasticsearch update! 🎉