teleren/devto huggingface dataset:
Como conseguir ganhar experiência como desenvolvedor júnior sem estar em uma empresa?
Tags: career, development, frontend, backend
Published: 2023-08-18 00:10:51

No mercado competitivo de tecnologia, a busca por oportunidades para desenvolvedores juniors pode ser frustante.

As empresas buscam profissionais com experiência, o que pode deixar alguns desenvolvedores se perguntando: como adquirir experiência sem estar no mercado?

Se você se identifica com essa questão, saiba que você não está sozinho.

A boa noticia é que existem alternativas para ganhar experiência e desenvolver habilidades essenciais para o mercado de trabalho, mesmo fora do ambiente corporativo.

Uma dessas alternativas é o [Union Developers](uniondevelopers.com.br), que busca ajudar desenvolvedores juniors a conquistar experiência e habilidades necessárias para entrar no mercado.

No Union, nosso objetivo é oferecer uma experiência única e valiosa para desenvolvedores que buscam aprimorar suas habilidades e competências.

Através de uma abordagem prática e imersiva, buscamos proporcionar uma experiência que se assemelha ao cotidiano de uma empresa real, onde os membros do Union têm a oportunidade única de adquirir a experiência que falta.

Nossos projetos são gerenciados utilizando métodologias ágeis, que permitem que os membros desenvolvam habilidades essenciais, como trabalho em equipe, comunicação e inteligência emocional.

Para tornar a experiência ainda mais enriquecedora, contamos com desenvolvedores experientes que guiam os membros em suas jornadas, proporcionando insights valiosos e orientação durante todo o processo.

Se você é um desenvolvedor júnior em busca de oportunidades para desenvolver suas habilidades e construir uma base sólida para sua carreira, o Union é o lugar perfeito para você.

Acesse agora **uniondevelopers.com.br** e saiba como participar desse projeto incrível e inovador!
Type-Safe하게 다형성 지원하기
Published: 2023-11-27 13:14:08

---
title: Type-Safe하게 다형성 지원하기
published: true
date: 2023-08-18 00:00:00 UTC
tags: 
canonical_url: https://www.hyesungoh.xyz/polymorphism-with-type-safe
---

![Type Safe하게 다형성 지원하기](https://github.com/hyesungoh/hyesungoh.xyz/assets/26461307/6c232519-57cf-4b28-baf2-e8f0399990da)

본 글은 현재 재직중인 ['F-Lab'의 블로그](https://f-lab.kr/blog/polymorphism-with-type-safe)에서 확인할 수 있어요!
Video: Up and Running with Turbo Android - Part 2
Tags: android, turbo, ios, rails
Published: 2023-08-21 10:33:44

---
title: Video: Up and Running with Turbo Android - Part 2
published: true
date: 2023-08-18 00:00:00 UTC
tags: android, turbo, ios, rails
canonical_url: https://williamkennedy.ninja/android,/turbo/2023/08/18/video-up-and-running-with-turbo-android-part-2/
---

<iframe width="560" height="315" src="https://www.youtube.com/embed/8wYB2aX7rco" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
RustShip: a new Rust podcast
Tags: rust, podcast
Published: 2023-08-21 20:14:53

---
title: RustShip: a new Rust podcast
published: true
date: 2023-08-18 00:00:00 UTC
tags: rust, podcast
canonical_url: 
---

I’m excited to announce that I started RustShip: a new podcast where I interview other Rust developers to learn from their experiences.

## RustShip #1 — Creating successful open-source projects

![RustShip episode image](https://www.marcoieni.com/2023/08/rustship-a-new-rust-podcast/rustship1.jpg)

In the first episode, I interviewed [Orhun](https://orhun.dev/), Arch Linux package maintainer and author of tens of open-source projects used and loved by thousands of people, including myself.

Orhun shared what it’s like maintaining Rust code and his advice on increasing the adoption of our open-source projects.

You can find the full episode on [YouTube](https://www.youtube.com/live/_xABF_H8b3g?feature=share&t=311) or your favorite [podcast client](https://ieni.dev/rustship).

If you don’t have time to listen to the full episode, here are some clips:

- [Creativity and Open Source](https://www.youtube.com/watch?v=sTEMWoIMBMY) (25 minutes)
- [Open Source sustainability and burnout](https://www.youtube.com/watch?v=2sHD3CCPt40) (37 minutes)
- [Packaging Rust binaries for Linux distributions](https://www.youtube.com/watch?v=1j4zuPN_8kU) (4 minutes)
- [Dogfooding: use your own tools](https://www.youtube.com/shorts/EPlX1ITjGoE) (1 minute)

## What’s next?

I will record the next episode live on [YouTube](https://www.youtube.com/watch?v=bh6BaJhIrFM) on August 23, 2023. I will interview [Predrag Gruevski](https://predr.ag/) about [Trustfall](https://github.com/obi1kenobi/trustfall) and [Cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks), two Rust projects he created:

- Trustfall is a query engine for any combination of data sources, allowing to query files and APIs as if they were databases.
- Cargo-semver-checks is a cargo plugin that scans Rust crates looking for semver violations. It uses Trustfall and Rustdoc to do its job.

I plan to do at least one episode every month. Follow me on [YouTube](https://www.youtube.com/c/MarcoIeni), [Twitter](https://twitter.com/MarcoIeni), [LinkedIn](https://www.linkedin.com/in/MarcoIeni/) and [Mastodon](https://hachyderm.io/@MarcoIeni) to stay up to date with the latest news and join the next live episodes: I’m always happy to answer questions from the chat during the live stream.
Video: Up and Running with Turbo Android
Tags: android, turbo, ios, rails
Published: 2023-08-21 10:34:02

---
title: Video: Up and Running with Turbo Android
published: true
date: 2023-08-18 00:00:00 UTC
tags: android, turbo, ios, rails
canonical_url: https://williamkennedy.ninja/android,/turbo/2023/08/18/video-up-and-running-with-turbo-android/
---

<iframe width="560" height="315" src="https://www.youtube.com/embed/m94jwRRvAVs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe>
The 59th Day of the 100 Days of Code Challenge
Published: 2023-08-17 23:40:49

Hey everyone!

Today I worked a bit more on the personal assistant project, and Langchain agents apparently generate their own prompts with tools. Trying to find a way to make the prompt for the assistant as effective as possible, as when asked for personal details, it says "As an AI language model" or refers to itself as an assistant rather than the actual person making the call.

Learning more about Langchain as I go, it's not something I want to give up on as it seems astonishingly useful. It will allow me to add more tools, events, functionality as I go about making a call automatically for someone. And it will do everything based on the outcome of the call.

I believe that Langchain will be a big part of this project and that I'll learn quite a bit about it, which is always, the end goal!

Happy coding everyone!
Flatiron - Phase 1
Tags: javascript, html, beginners, codenewbie
Published: 2023-08-17 23:00:19

Three weeks ago, I embarked on my journey at Flatiron School. I had anticipated that this program would be challenging, and indeed, my expectations were met. Over this short span of time, my classmates and I have been swiftly introduced to the realms of JavaScript, HTML, CSS, and JSON Servers. The influx of new information has been overwhelming, yet together, we've successfully completed the first of five phases. Despite the difficulties, I find myself relishing each step of this learning process.

Our initial lessons at Flatiron revolved around what they term the "Three Pillars of Web Programming": Recognize Events, Manipulate the DOM, and Communicate with the Server. In just three weeks, we've delved into utilizing various events in JavaScript to manipulate the HTML files, subsequently showcasing our work on a web page via a JSON server.

I am enthralled by the concepts I've been able to integrate into my own code and eagerly anticipate delving deeper into this subject matter. Of all the topics covered so far, I have found the art of Manipulating the DOM and crafting distinct webpages using CSS to be particularly engaging. The visual aspect of Web Development captivates me; my inherent creativity thrives in the ability to sculpt a webpage's appearance according to my imagination. The process of preparing for code challenges has endowed me with a comprehensive understanding of the myriad ways in which a webpage can be designed. Furthermore, exploring the diverse events that can be incorporated into a webpage is equally captivating. While I had a reasonable grasp of click events prior to enrolling at Flatiron, the newfound knowledge of submit and mouseover events has broadened my skill set. It is truly gratifying to acquire the expertise necessary to implement seemingly minor features on a website, such as revealing details upon clicking an image or enabling the 'like' functionality for a post. These elements may appear basic and commonplace across websites, yet the ability to create them from scratch is both empowering and enlightening.

Reflecting upon my time at Flatiron thus far, I am thoroughly enjoying my introduction to Web Development and eagerly anticipate the challenges that lie ahead. However, I recognize the need to dedicate time to further study. Failing to keep up with the deluge of knowledge could potentially lead to forgetfulness, which in turn might complicate the upcoming final assessment. Nonetheless, I am immensely content with my decision to embark on this initial step in the realm of tech.
Understanding the difference between Map and ForEach method.
Tags: webdev, beginners, programming, tutorial
Published: 2023-08-17 23:00:00

Have you ever wondered about the difference between map and forEach when dealing with arrays in JavaScript? If your answer is Yes then Let's take a stroll through these methods! 🚶‍♂️

## `map` Method: Transform and Collect
Think of the `map` method as a transformation machine for arrays. It takes an array, processes each item, and creates a brand-new array with the processed items. It's like sending each item through a transformation process and collecting the transformed items in a new basket. Let’s see an example 👇🏽
For example, imagine you have an array of numbers and you want to double each number(. Here is how you would do it 👇🏽

```
const numbers = [1, 2, 3, 4, 5];

const doubledNumbers = numbers.map(number => number * 2);
// Result: [2, 4, 6, 8, 10]
```

Here, `map` applies the `number * 2` operation to each number in the array and collects the doubled numbers in a new array called `doubledNumbers`.

## `forEach` Method: A Guided Tour
The `forEach` method is like a tour guide that takes you through each item in an array and shows you around. It doesn't change the items or create a new array. It's like taking a walk through a garden and admiring the flowers without picking them.

For example, let's say you have an array of names and you just want to log each name. Here is how you would do it. 👇🏽

```
const names = ['Lawrence', 'Dan', 'Trecia'];

names.forEach(name => console.log(name));
// Output: Lawrence, Dan, Trecia
```
With `forEach`, you're walking through the array and logging each name, but you're not changing the array itself.

## Summary
- `map` transforms items and creates a new array with transformed items.
- `forEach` guides you through items, letting you perform actions, but doesn't create a new array or modify the existing one.

## Conclusion
That’s all guys. Hope you now understand what or how the map and forEach method works. You can also ask question if you are not clear about any of these methods. Have an amazing weekend and see you next week. 😀
react native expoでauth0 sdkを使うと TypeError: Cannot read property 'hasValidAuth0Instance' of null となる
Published: 2023-08-17 22:30:00

---
title: react native expoでauth0 sdkを使うと TypeError: Cannot read property 'hasValidAuth0Instance' of null となる
published: true
description: 
tags: 
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-08-17 22:24 +0000
---

react native expoで auth0を使いたくて、[チュートリアル](https://auth0.com/docs/quickstart/native/react-native-expo/00-login#show-user-profile-information) をしていると、以下のエラーが起きた

```
TypeError: Cannot read property 'hasValidAuth0Instance' of null
```

ググってもそれらしい情報が出ず、困っていたが、どうやらauth0のネイティブモジュールが正しくビルドできていなかったようだ。

チュートリアルでは
```
expo prebuild
```
の指示があり、これでネイティブモジュールもビルドできていたのではないかと思っていたがどうやらそうではないらしい

ということでandroidプロジェクトをビルドしてみるとうまく動いた
```
# jdkが必要

cd ./android
./gradlew :app:build
```
ちなみに上記コマンドはビルド失敗するのだが、auth0のモジュールはビルドできていたのか、expoは動いた

package.jsonには `expo run:android` もあるので、こちらも試してみるとよいだろう
```
npm run android
```
Unlocking Personal Style: Custom Keychains That Speak Volumes
Tags: keychain, customkeychains
Published: 2023-08-17 22:17:31

In a world where personalization is paramount, even the tiniest accessories can make a bold statement. Enter [custom keychains](https://vograce.com/collections/custom-keychains) - a small yet impactful way to showcase your individuality. These tiny treasures do more than just hold keys; they carry a piece of your identity.
Gone are the days of generic keychains. With the rise of customization, you can now curate a keychain that echoes your personality. From elegant initials that add a touch of sophistication to funky designs that reflect your quirks, the options are limitless. Whether you're a minimalist who prefers sleek engraving or a vibrant spirit drawn to colors and patterns, custom keychains let you craft an accessory that's uniquely 'you.'
These miniature works of art also carry sentimental value. They can commemorate special occasions like graduations, birthdays, or weddings. Picture a keychain featuring coordinates of a cherished place or the silhouette of a beloved pet - each piece becomes a cherished memory.
Custom keychains aren't just for individuals; businesses have also embraced them as a branding tool. Companies can engrave their logos, turning these accessories into subtle marketing tools. Hand them out at events, and you've not only given someone a practical item but also a piece of your brand to carry wherever they go.
In a world saturated with mass-produced items, custom keychains stand out as a testament to individuality. They're a conversation starter, a memory keeper, and a style statement all in one. So, whether you're looking to add a dash of 'you' to your everyday carry or seeking a memorable gift, consider the personalized charm of custom keychains. After all, it's the little things that often leave the biggest impact.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qhegq9c8w6qigfrj3af9.jpg)
Changing the Number of Posts Displayed Per Page in Ghost CMS
Published: 2023-08-25 00:34:16

---
title: Changing the Number of Posts Displayed Per Page in Ghost CMS
published: true
date: 2023-08-17 22:05:41 UTC
tags: 
canonical_url: https://ajot.me/changing-the-number-of-posts-displayed-per-page-in-ghost-cms/
---

 ![Changing the Number of Posts Displayed Per Page in Ghost CMS](https://ajot.me/content/images/2023/08/ghost-tips-tricks-banner.png)

So, I wanted to customize the number of posts displayed per page on my Ghost CMS website using the Dawn theme. The default setting was showing only 5 posts, and I wanted to bump that up to 25.

Here's how I did it, broken down into simple steps, so it's easy to remember and follow along.

### Download the theme you are currently using

First, we need to download the current theme to access the file containing the posts' settings.

Go to \*\*Settings -> Design\*\* in your Ghost CMS admin panel.

![Changing the Number of Posts Displayed Per Page in Ghost CMS](https://ajot.me/content/images/2023/08/CleanShot-2023-08-17-18-02-52@2x.png)

### Edit package.json File

1. Open the downloaded theme directory and locate the `package.json` file.

2. Find the key `posts_per_page` and change its value to your desired number (For Dawn theme, by default, this was set to 5. I  changed mine to 25).

3. Save the changes to the file.

![Changing the Number of Posts Displayed Per Page in Ghost CMS](https://ajot.me/content/images/2023/08/image.png)

### Zip Up the Directory

We need to prepare the modified theme for uploading back to Ghost CMS.

Zip up the entire theme directory, ensuring all necessary files are included (on a Mac, you can right click on the directory, and click "Compress").

### Upload the Modified Theme to Ghost CMS

Finally, we need to upload the customized theme back to Ghost CMS.

1. Head back to the \*\*Design\*\* section in your Ghost CMS admin panel.
2. Upload the zipped directory containing the modified theme.

![Changing the Number of Posts Displayed Per Page in Ghost CMS](https://ajot.me/content/images/2023/08/CleanShot-2023-08-17-18-02-52@2x-1.png)

Fin!
Serving Dynamically Generated PDFs in Django Production
Tags: webdev, django
Published: 2023-08-17 22:02:28


## Serving Dynamically Generated PDFs in Django

In many Django projects, there's a need to generate and serve files dynamically. One common scenario is generating PDFs on-the-fly based on user interactions. Here are various strategies to handle such cases, especially when serving these files with Django both in development (`DEBUG=True`) and in production (`DEBUG=False`).

### 1. Using a dedicated directory for generated files:

#### Step-by-Step Implementation:

1. **Create a Directory**: Set up a directory named `generated_pdfs` at the root level of your project.
   
2. **Update `urls.py`**:

Add the following to your `urls.py` to serve files from the `generated_pdfs` directory:
```python
from django.views.static import serve
from django.conf import settings
import os

path('generated_pdfs/<path:path>/', serve, {'document_root': os.path.join(settings.BASE_DIR, 'generated_pdfs')}),
```

3. **Modify the PDF generation logic**:

When saving the dynamically generated PDF, ensure it's saved to the `generated_pdfs` directory.

4. **Access the PDFs**:

After generating a PDF, it can be accessed via: `http://localhost:8000/generated_pdfs/<pdf_name>.pdf`

### 2. Using Django's static file handling:

This method involves treating the generated PDFs like any other static file in Django, but it requires running the `collectstatic` command each time a new file is generated.

#### Step-by-Step Implementation:

1. **Save the PDF**: When generating a new PDF, save it in Django's static directory.

2. **Automate `collectstatic` after PDF generation**:
To ensure the newly generated PDFs are available immediately, run the `collectstatic` command after generating a PDF. You can automate this by adding the following logic in your PDF generation view:

```python
from django.core.management import call_command

# ... Your PDF generation logic ...

# After saving the PDF, run collectstatic
call_command('collectstatic', '--noinput')
```

3. **Serving in Production**: In a production environment, ensure that you've set up a web server or a CDN to serve the static files.

### Troubleshooting:

1. If you encounter a **HTTP 500 error**, check the Django development server console logs for detailed error messages.
2. Ensure the `generated_pdfs` directory and the files within have the appropriate read permissions.
3. In the case of conflicting URL patterns, Django evaluates them in order. Ensure that no pattern above the `generated_pdfs` pattern is catching the request first.


Follow me on [Twitter](https://twitter.com/tunahorse21?t=xpoeAEPYS2X_9CU_nJg39w&s=09)
Day 807 : Almost There
Tags: hiphop, code, coding, lifelongdev
Published: 2023-08-17 21:40:29

_liner notes_:
- Professional : Had a couple of meetings. It was good to see everyone. Spent the rest of the day working on a demo application for a blog post I'm putting together. I'm almost there! I've got the output coming from one library, now I need to figure out how to make it compatible with the input of another library to get the info I want. It's using websockets which I really have no experience with. My issue is that I'm not finding any examples with the second library using websockets. It says it supports it. Just have to keep trying different things.

- Personal : Went through some tracks for the radio show. Still ran into issues with the tokens generated in my side project. Spoke with a coworker and I think it could be linked to some changes to the new SDK that's not out yet. This is what happens when you use private beta projects. haha I think all I'll need to do is update the libraries and maybe regenerate some keys. We'll see. Since I couldn't figure out the issue last night, I finally watched a bunch of anime episodes. I'm almost caught up.

![Looking into a river valley in Geirangerfjord, Norway with a few houses on the shore with a bunch of trees and snow on top of the mountains](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98m4r6if3rin2pcft8ka.jpg)

I really need to get this demo application worked out. Going to keep working on it. I think I just need a couple of more hours. Going to eat dinner and get back at it. If I have time, I may try and see if I can get the token issue in my side project worked out as well. Wish me luck!

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube AyQ6AbmY_Iw %}
Conditional middlewares in Express.js
Tags: express, node, backend, beginners
Published: 2023-08-17 21:32:21

[Github link to article](https://github.com/sanjar-notes/nodejs/blob/925a86d740ed42ff378d4635561a8913238b8471/home/4_resource_itineraries/2_Node_js_complete_guide_academind/5_Express_js/64_Conditional_middlewares.md)

## Situation
There is a backend app with many middlewares, including two named X and Y. The requirement is that only X runs or Y runs based on a condition.
&nbsp;

## Solution
How do we handle this?
There are a few cases here, with minor variations.
1. Keep it linear - we add the middlewares one after the other. In the body of these middlewares we `return` early if the condition is not matching.
	- If both are custom middlewares
	```js
	function mwX(req, res, next) {
		if(condition)
			return next();
		// do X mw logic
	}
	
	function mwY(req, res, next) {
		if(condition)
			return next();
		// do Y mw logic
	}

	app.use([mwX, myY]);
	```
	- If any of them is library generated. Or if you don't want to litter conditional code into middlewares.
    ```js
	// of course, this can be done using array too
	function xConditional(req, res, next) {
		if(condition)
			return X;
		return ((req, res, next) => { return next(); });
	}

	function yConditional(req, res, next) {
		if(condition)
			return Y;
		return ((req, res, next) => { return next(); });
	}

	
	app.use([xConditional, yConditional])
	```
2. Ternary - works only if the condition is static (i.e. not dependent on `req` or `res`), we can use the ternary operator. `app.use(condition ? X : Y);`. X and Y could be custom or library generated doesn't matter. Code:
	```js
	app.use(staticCondition ? X : Y);
	```


Note: 
- Prefer differentiation based on route, method and router before doing this. They are in-built control mechanisms which are intuitive and easy to use.
- Can be generalized to more than 2 middlewares too.
- Direct wrapper  (special case) - if the middlewares are exclusively conditional. Code:
	```js
	function wrapperMiddleware() {
	  if(condition) // based on req or res logic or otherwise
	    return X;
	  else
	    return Y;
	}

	app.use(wrapperMiddleware());
	```