teleren/devto huggingface dataset:
Podcast Palooza— What are you listening to? (History Edition)
Tags: watercooler, podcast
Published: 2024-03-04 17:00:00

I'm here again! Welcome back!

I'm Rachel (they/them) and I am humbly confessing to you all that I struggle to function if I do not listen to at least 3 podcast episodes a day. It has become my nature, I love it, I feel more educated, and I would love to talk to you about podcasts. 

If you're not feeling like sharing a podcast today, we also have a [Music Monday](https://dev.to/michaeltharrington/series/17887) here for ya to join! Go get in there!


## What We Are Working With

This week I am wanting to expand upon a genre that I, admittedly, don't spend enough time indulging!!!! We are here to chat about all your history-related podcasts. Comment down below some podcasts themed around historical storytelling, historical breakdowns of major events, historical inventions, and all the like, I wanna hear them.

![Cartoon listening to something through headphones](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vfoh2o55hcglk7pbppnp.gif)

---

_Here again to say that we also have a podcast tag for your listening musings, sharing your very special new episodes, and finding new things from people on the internet. Woohoo! Check it out._

{% embed https://dev.to/t/podcast %}

I'm happy to have ya here and also a reminder that if you don't have any historical podcasts to share, feel absolutely free to share below a podcast that you listened to that you liked in any other genre. I don't care! I am just happy to be here. 

Ta ta for now,
Rachel
DataDen - Coming Soon. Tailor Your Data, Your Way
Tags: webdev, database, datastructures, news
Published: 2024-03-04 17:00:00

Keep Coding, creators of very popular UI KITS MDB (Bootstrap) and TWE (TailwindCSS) have just announced they are close to launching a new product: DataDen - Plugin that extends the functionality of the library with table component.

**Advanced data structure**
The latest and most advanced data structure allows customizing each column (sort, width, resize, field) and matches values from each row to a column in which the field equals a given key value.

**Draggable columns**
Experience seamless interactivity with our draggable columns feature. Effortlessly rearrange your data grid to suit your workflow, ensuring optimal organization and efficiency. Just click, drag, and drop to customize your data display exactly as you need.

**Pagination**
Explore efficient data navigation with our pagination example. Learn to seamlessly handle large datasets by integrating simple, intuitive pagination controls.

**Column search**
Discover the power of quick data retrieval with our search column feature. Easily locate the information you need within your DataDen grids for a more streamlined and productive data management experience.

**Cell formatting**
Enhance your data grid with our versatile cell formatting options. Tailor each cell's appearance for clarity and impact, using colors, fonts, and styles that make your data speak volumes. Perfect for highlighting critical insights and personalizing your data view

**Compact version**
Unlock the full potential of your data grid with advanced CSS customization. Style every aspect to match your brand or personal preference, from colors and fonts to layouts. Create a visually cohesive and highly functional data interface with ease.

**Waiting List**
So don’t hesitate to join DataDen’s Waiting List: Get front-row seats to the future of Data Grid.

In due course, you will receive an exclusive discount that you can use to purchase Data Den Plugin (& more!)

https://getdataden.com/general/waiting-list/
Html code with semantic value, field set and legend
Tags: login
Published: 2024-03-04 16:51:58

<!DOCTYPE html>
    <html lang="en">
    <head> 
      <meta charset="UTF-8"> 
      <meta name="viewport" content="width=device-width, initial-scale1.0"> 
      <title>Form With Semantic HTML</title>  

    </head>
    </body> 

       <h1>Form With Semantic HTML</h1>

       <form> 
        <fieldset> 
         <section> 
           <label for="fullName">Full Name:</label> 
           <input type="text" id="fullName" name="fullName" required> 
         </section> 

         <section> 
           <label for="email">Email:</label> 
           <input type="email" id="email" name="email" required> 
         </section>

         <section>
           <label for="password">Password:</label> 
           <input type="password" id="password" name="password" required> 
         </section> 

         <section> 
            <label for="gender">Gender</label> 
            <select id="gender" name="gender"> 
              <option value="male">Male</option>
              <option value="female">Female</option> 
              <option value="other">Other</option> 
            </select> 
         </section> 

         <section> 
           <label> 
             <input type="checkbox" id="newsletter" name="newsletter"> 
             Subscribe to Newsletter
           <label>
         </section> 

         <section> 
            <label for="comments">Comments</label> 
            <textarea id="comments" name="comments" rows="4"></textarea> 
        </section> 

        <button type="submit">submit</button> 
      </form> 
    </fieldset>

    </body>
    </html>
why to avoid onion-like architectures
Tags: backend, architecture
Published: 2024-03-04 16:45:00

first things first, it is important for us to understand what onion-like stands for.

just like an onion, an architecture must have a lot of layers, but, at some point, the excess of layers may make the project be hard to maintain or have a poor performance.


![onion architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w4h3ycrzbjygldsbf60v.png)


# the hexagonal issue

the hexagonal arch is known for being a well designed and resilient architecture, but, it have some serious issues.

almost every one of them issues are related to the amount of processes and changes that you need to perform in order to maintain that architecture.

let me give you an example: if you are willing to create an easy back-end application that must only feed some information to your front-end application without a lot of permissions or data parsing, you must go with the simpler approach possible.

but, let us imagine that you go and do a bad take and choose a ports & adapters architecture for this application that is supposed to be as simple as possible.

your first issues probably will be:
- you will need to create a protocol for every one of your requests and make them resilient for other approaches, such as cli commands or webhooks
- type inconsistencies: if you do not use a language that allows you to explicit types and create a type-safe application, you probably will suffer from inconsistencies between the layers of your application 
- amount of files needed to be changed in order to perform an endpoint rule change 


![hexagonal architecture](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3vfp96uhdavatct4ich.png)



I know that other problems may rise or some of the problems of the list above can be avoided using DTOs and other parsing features, but, would not it be easier if you just chose to use a simpler architecture since the start of the project?

# taking the right option

it is not right to tell someone that a specific architecture will solve every structural problem, but, you need to have something in mind when you are thinking about architecture: its main purpose is to solve organizational problems, so, do not try to create more of them.

if you need to solve a small problem with a small crew, you must use a small and fast architecture 

if you are willing to solve a complex problem with a larger and more mature crew, you must use an architecture that will be reliable for your infrastructure.

-----

Photo by <a href="https://unsplash.com/@nickandreka?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Nick Andréka</a> on <a href="https://unsplash.com/photos/a-black-and-white-photo-of-water-bubbles-Y8mtS_0-Rbo?utm_content=creditCopyText&utm_medium=referral&utm_source=unsplash">Unsplash</a>
3 ways to write funnel SQL queries
Tags: sql, product, analytics, tutorial
Published: 2024-03-04 16:42:14

Product analytics in the data warehouse (or data lake), is entirely different from traditional product analytics like Amplitude or Mixpanel. 

Some companies can't move their data to 3rd party apps due to costs or security compliance. These companies are left with writing SQL or warehouse native product analytics.

In this blog, I cover three ways to write funnel SQL queries.

It is a slightly long post so I left it on our private blog site:

[3 ways to write funnel queries](https://www.mitzu.io/post/funnels-with-sql-the-good-the-bad-and-the-ugly-way)
10 websites that will finish hours of work in minutes⚡
Published: 2024-03-04 16:40:23

ChatGPT is just the beginning!

👇🏿Here are 10 websites that will finish hours of work in minutes.

These websites will help you become more productive in your life.
_____________________

1. tl;dv - AI Meeting Assistant - Say goodbye to unproductive meetings with TLDV! Quickly know what happened in meetings with notes and transcripts that show the exact times. https://tldv.io
___________

2. Glasp - Empower your workflow with intuitive AI assistance. Simplify tasks, amplify efficiency. https://glasp.co/
___________

3. Mock Interview Preparation: Prepare for your next interview with this helpful tool. https://sqlpad.io/
___________

4. Job Huunt - AI Resume Builder and Remote work search: Streamline your job search with this AI-powered tool. https://jobhunnt.com/
___________

5. Klap - Turn YouTube videos into Shorts, Tiktoks in less than 5 minutes: Easily create short videos for social media. https://klap.app/
___________

6. Tweet Hunter: Create viral posts on Twitter with this handy tool. https://tweethunter.io/
___________

7. 10Web.io - Build websites in 5 minutes: Create stunning websites in minutes with this tool. https://10web.io/
___________

8. Decktopus AI - Create Presentations with AI in 5 minutes: Impress your audience with professional presentations in no time. https://www.decktopus.com/
___________

9. Headshots Pro - Turn your selfies into Professional LinkedIn headshots: Make a great first impression with professional headshots. https://www.headshotpro.com/
___________

10. Bookwiz - Write and Publish book in 7 days with AI: Fulfill your dream of becoming a published author in just 7 days. https://bookwiz.io/
___________

Follow me for more exciting tools and resources to boost your productivity!👨‍💻.
From dbf to PostgreSQL with Python
Tags: postgres, dbf, sql, python
Published: 2024-03-04 15:00:00

---
title: From dbf to PostgreSQL with Python
published: true
date: 2024-03-04 15:00:00 UTC
tags: PostgreSQL, dbf, SQL, Python
canonical_url: https://ftisiot.net/posts/dbf-to-postgresql-python/
---

Some time ago I found an interesting database file suffix I never faced before: the `.dbf` and saw aroung that it was first introduced in 1983 with dBASE II. This article showcases how we can automatically generate the PostgreSQL table and fill it with data using Python and [dbfread](https://dbfread.readthedocs.io/en/latest/exporting_data.html#dataset-sql).


>If you need a FREE PostgreSQL database? 
>🦀 Check [Aiven's FREE plans](https://go.aiven.io/francesco-signup)! 🦀
>⚡️ Need to optimize your SQL query with AI? ⚡️
> 🐧 Check  <a href="https://go.aiven.io/ft-ai-db-optimizer">Aiven AI database optimizer</a>! Powered by EverSQL 🐧

## Download a sample dbf file

We can get a sample `.dbf` file from [Infused](https://github.com/infused/dbf/blob/master/spec/fixtures/cp1251.dbf) with the following in our terminal

```bash
wget https://github.com/infused/dbf/raw/master/spec/fixtures/cp1251.dbf
```

This will store a file named `cp1251.dbf` in the current folder.

## Use dbfread to move the data into PostgreSQL 

We need to install simpledf with

```bash
pip install dbfread
```

Then we can write a Python script (named `convert_bdf_to_sql.py`) that opens the `sample.dbf` file and creates the PostgreSQL DDL and loads the data into a `CSV` file we can use to populate the database

```python
from dbfread import DBF
import dataset

db = dataset.connect('postgresql://[USER]:[PWD]@[HOST]:[PORT]/[DBNAME]?sslmode=require')
table = db['people']

for record in DBF('cp1251.dbf', lowernames=True):
    table.insert(record)
```

In the above script we:
* connect to a PostgreSQL instance using 
    * `[USER]`: the username
    * `[PWD]`: the password
    * `[HOST]`: the hostname
    * `[PORT]`: the port
    * `[DBNAME]`: the database name
* define a table named `people` that will be created and populated
* insert into the `people` table all the records in `cp1251.dbf`

We can then execute it with:

```bash
python convert_bdf_to_sql.py
```

If we now connect to our PostgreSQL database:

```bash
psql postgres://[USER]:[PWD]@[HOST]:[PORT]/[DBNAME]?sslmode=require
```

we can check the `people` table being populated with:

```sql
select * from people;
```

We can see the data in the table!

```
 id | rn |                  name
----+----+----------------------------------------
  1 |  1 | амбулаторно-поликлиническое
  2 |  2 | больничное
  3 |  3 | НИИ
  4 |  4 | образовательное медицинское учреждение
(4 rows)
```
What are your goals for week 10 of 2024?
Tags: discuss, motivation
Published: 2024-03-04 16:34:35

It's week 10 of 2024. March is here it's almost Spring!


## 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. Collected Rejections 
- Project work 
   * Got an idea to revive an old inventory project. Need to start brain storming and wire framing. Looked an an API to make this project work.
- [:x:] Blog 
- Events 
  * [:white_check_mark:]Thursday local meet up is having an open work session. Made to the meet up. First in person developer meet up in a long time. 
Took a while to get there. A cargo train was parked on the tracks. But The meeting place was a block or so on the other side. so I waited.
Finally the train moved then stopped with a box car and a half to go to clear the road. 
So I turned around and went the long way. Coming from the opposite direction I think I saw the backside of the trucks I saw from the other side of the track. 
Meet some people and had a good work session left in time for.
  * [:white_check_mark:] Thursday Virtual Coffee great session here. Then went to a school event that night.
-[:white_check_mark:]  Spring time, to cut some bushes down.

 
### This Week's Goals

 

- Continue Job Search. 
- Project work 
   * Got an idea to revive an old inventory project. Need to start brain storming and wire framing.
- Blog 
- Events 
  * Thursday Virtual Coffee 
- Spring time Need to cut some bushes down.
- This is Virtual Coffee's month of get job ready. I'll run a goal setting thread on Slack. 



### 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 push
```
Smart kids use AI while Uncles still use PowerPoint
Published: 2024-03-04 16:31:00

Smart youngsters leverage AI tools for presentations while older generations still rely on traditional methods like PowerPoint.

Here are six AI-powered presentation creation tools:

1. Pop AI: Craft visually appealing presentations effortlessly with PopAi. Just input your topic, and PopAi generates slides, images, and text for you. [Link: https://www.popai.pro/home]

2. Gamma AI: Revolutionize the way you present ideas with AI-powered Gamma. Start writing and let Gamma handle the formatting and design work for you. [Link: https://gamma.app/]

3. Tome App: Build engaging presentations and microsites effortlessly with Tome. It's more dynamic than traditional slide decks and simpler than webpage design. [Link: https://tome.app]

4. Decktopus AI: Experience the future of presentations with Decktopus. Create stunning slides in minutes with the help of AI technology. [Link: https://decktopus.com]

5. Visme: Design custom presentations in seconds with Visme's AI Presentation Maker. Elevate your content with high-quality slides effortlessly. [Link: https://www.visme.co/ai-presentation-maker/]

6. Canva: Discover inspiring presentation ideas with Canva's AI-powered Magic Design for Presentations. Simply input your prompt and let Canva do the rest. [Link: https://www.canva.com/create/ai-presentations/]

If you find these tools helpful, don't forget to share them! ♻️
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izi9t9rihcwn623xlq3v.jpg)
How to add Sender Name when sending email using python
Published: 2024-03-04 16:27:26

```
from email.mime.text import MIMEText
import smtplib

def send_email(server, recipient, subject, body, sender_name, sender_email):
    msg = MIMEText(body, 'html')
    msg['Subject'] = subject
    msg['From'] = f"{sender_name} <{sender}>"
    msg['To'] = recipient
    msg['X-Mailer'] = f"{sender_name}"

    try:
        server.sendmail(sender, recipient, msg.as_string())
        print("Email sent to sender: " + recipient)
    except Exception as e:
        print("Email failed to send to sender: " + recipient)
        print(e)

smtp_host = 'smtp service host'
smtp_port = port
smtp_username = 'username'
smtp_password = 'pasword'

server = smtplib.SMTP(smtp_host, smtp_port)
server.starttls()
server.login(smtp_username, smtp_password)
recipient = "recipient@email.com"
subject = "Test Email"
body = "This is a test email"
sender = "sender@email.com"

send_email(server, recipient, subject, body, sender_name, sender_email)

```
NFC QR CODE STICKERS & NO POS Terminal Needed
Tags: nfc, qr, code, stickers
Published: 2024-03-04 16:25:44

We have a NFC Sticker and QR code to replace POS Terminal. Anywhere anyone can start receive payments for their work.
07455407999

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8nx0l00zsoz5re51vsgy.png)
NFC QR CODE STICKERS & NO POS Terminal Needed
Tags: nfc, qr, code, stickers
Published: 2024-03-04 16:25:39

We have a NFC Sticker and QR code to replace POS Terminal. Anywhere anyone can start receive payments for their work.
07455407999

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8nx0l00zsoz5re51vsgy.png)
𝐀𝐖𝐒 𝐂𝐨𝐦𝐦𝐮𝐧𝐢𝐭𝐲 𝐁𝐮𝐢𝐥𝐝𝐞𝐫
Tags: aws, awscommunity, devops, awsengineer
Published: 2024-03-04 16:07:49

🌟 𝐁𝐢𝐠 𝐍𝐞𝐰𝐬!

😀 I'm excited to share the news with you all that I've been selected as an 𝐀𝐖𝐒 𝐂𝐨𝐦𝐦𝐮𝐧𝐢𝐭𝐲 𝐁𝐮𝐢𝐥𝐝𝐞𝐫.

😊 I'm truly honored by this opportunity and eager to work together with all of you to make our Cloud Community even better. Whether it's 𝐬𝐩𝐚𝐫𝐤𝐢𝐧𝐠 𝐜𝐨𝐧𝐯𝐞𝐫𝐬𝐚𝐭𝐢𝐨𝐧𝐬 or simply lending a 𝐡𝐞𝐥𝐩𝐢𝐧𝐠 𝐡𝐚𝐧𝐝, I'm committed to making our community a welcoming and supportive space for everyone.

😉 Thank you all for your support and encouragement. I can't wait to explore this journey with you all.

Check out the step-by-step guide to becoming #awscommunitybuilder
Link: https://lnkd.in/drBEUV54
Dynamic construction without reflection.
Tags: go, programming, beginners, tutorial
Published: 2024-03-04 16:01:44

This is an expanded explanation from my answer [here](https://stackoverflow.com/questions/78100054/using-polymorphism-vs-switch-in-golang/78101278#78101278).

Sometimes we're faced with the situation where we need to interpret an input, and create `<type>` based on it. Rightly so, the service providing that input doesn't (and shouldn't) care about our internal type structure, so we need to figure out how to interpret the input so we're executing the correct actions.

In Python, we can achieve this using the `getattr()` method to do some cool meta-programming, where we can use the value of string to get a matching object;

```python
import sys

def str_to_class(classname):
    return getattr(sys.modules[__name__], classname)
```

In Go, we don't have access to such a method, and there is no global registry of types we can readily access. So how do we achieve it?

We could build out own registry of types;

```go
var typeRegistry = make(map[string]reflect.Type)

func init() {
    myTypes := []interface{}{MyString{}}
    for _, v := range myTypes {
        // typeRegistry["MyString"] = reflect.TypeOf(MyString{})
        typeRegistry[fmt.Sprintf("%T", v)] = reflect.TypeOf(v)
    }
}

func makeInstance(name string) interface{} {
    v := reflect.New(typeRegistry[name]).Elem()
    // Maybe fill in fields here if necessary
    return v.Interface()
}
```

The problem with this is that compile-time errors now become run-time errors, aside from the fact that the code is very implicit and has poor readability in my opinion.  

Now, consider we have the following interface;

```go
type Fruit interface {
	GetVariety() string
}

type Apple struct {
	variety string
}

func NewApple(variety string) *Apple {
	return &Apple{variety: variety}
}

func (a *Apple) GetVariety() string {
	return a.variety
}

type Pear struct {
	variety string
}

func NewPear(variety string) *Pear {
	return &Pear{variety: variety}
}

func (p *Pear) GetVariety() string {
	return p.variety
}
```

What I want to do is take a message, perhaps something as simple as this;

```json
{
	fruit: "Apple",
	variety: "Golden Delicious"
}
```

And be able to construct the correct object (in this case Apple), which it turns out is very simple by linking the constructor funcs to a map key;

```go
var (
	fruits = map[string]func(string) Fruit{
		"Apple": func(s string) Fruit { return NewApple(s) },
		"Pear":  func(s string) Fruit { return NewPear(s) },
	}
)
```
Which we can then call in a few useful ways;

```go
someApple := fruits["Apple"]("Golden Delicious")
fruitVariety := someApple.GetVariety()

fmt.Println(fruitVariety)

// OR

fmt.Println(fruits["Apple"]("Golden Delicious").GetVariety())
```

Obviously we would want some error handling for `Fruit`s that don't exist, but that's another discussion.
✉️ I'm building GmailBridge 🔔
Tags: saas, sideprojects
Published: 2024-03-04 16:00:07

Okay, so I haven't given up yet. I am building a new micro-saas business and I am calling it **[GmailBridge](https://gmailbridge.com)** 🤞 


![Batman](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dd80gl30w1395u9nl8by.gif)

## What is GmailBridge?

For those who rely heavily on Gmail for their professional or personal emails, managing these inboxes can become overwhelming. For example, I use a bunch of filters to organize my mailbox in Gmail. Now let's say I want instant notification in my slack/telegram/discord when I receive an email that passes a filter. That's where [GmailBridge](https://gmailbridge.com) comes into play.

![What Is It](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2cz65gts4c2ou51fr2i.png)

It's a saas tool designed to bridge the gap between your Gmail inbox and your instant notifications apps, ensuring you never miss an important email again.

## What have I done?
Well, Instead of building the whole tool completely, I wanted to validate the idea first. So I have created a landing page and added a waitlist for interested people. 

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



I will start building it if I get 30 people to sign-up for this.

## Conclusion
I am definitely enjoying the process of building something from scratch but will it work this time, after my last failed attempt at the [TheMindMap](https://themindmap.app) ?

I don't know TBH. But the twitter OGs say that the key to a successful startup is to keep building till you find the one that sticks. 


![crossedHands](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/00o8mdmijj7v7g2j9f7y.png)


So here I am, trying my hand at solopreneurship one more time. My fingers are crossed 🤞 

If this product interests you, do checkout the website and sign-up in the waitlist at **[GmailBridge](https://gmailbridge.com)**

--- 

If you enjoyed reading this, don't forget to follow my journey on [Twitter](https://twitter.com/thatmanio). Cheers 🍻