teleren/devto huggingface dataset:
Truncate String with Ellipsis: CSS!
Tags: webdev, css, code, programming
Published: 2023-06-08 20:05:09


Today, I wanted to share a handy CSS technique for truncating long strings with an elegant ellipsis. If you've ever struggled with text overflowing and breaking your beautifully designed layout,

 How to truncate strings using CSS and bring tidiness to your content?

𝐒𝐧𝐢𝐩𝐩𝐞𝐭 𝐚𝐭𝐭𝐚𝐜𝐡𝐞𝐝:

The overflow: hidden property hides any content that overflows the container, white-space: nowrap ensures the text doesn't wrap to the next line, and text-overflow: ellipsis adds the ellipsis when the text is truncated.

💡 Pro tip #1: You can adjust the width of the container or combine this technique with media queries to create responsive designs that handle text truncation gracefully on different screen sizes.

💡 Pro tip #2:  Resize: horizontal or vertical can be used to scale it accordingly

If you found this tip helpful or have any questions, feel free to share your thoughts in the comments below. 🎨




![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gatvgc6ibbw3azf53ztv.jpeg)
Alternative Data Visualization Solutions!
Tags: javascript, python, datascience, dataviz
Published: 2023-06-08 19:53:00

Hi,

Lately, I have been studying different visualization solutions; I made a list with more than 40 open-source solutions and a brief summary about each in a Medium post.

To know more:

https://jlgjosue.medium.com/alternative-data-visualization-solutions-fa26728898cf

Thanks for reading; share this post! :)
Clojure Bites - Render HTML, introducing selmer templating library
Tags: clojure, programming, beginners, webdev
Published: 2023-06-08 19:33:58

Sometimes all we need is a way to render HTML out of a template, [selmer](https://github.com/yogthos/Selmer) is a great library for that, lets have a look at it! https://fpsd.codes/clojure-bites---rendering-html.html
Project Manager Interview Questions and Answers
Published: 2023-06-08 09:15:38

In a wide range of industries, project managers are essential to the accomplishment of projects. Having project managers offers the following advantages:
arranging Activities Effectively: Project managers are excellent at organising and arranging project activities. They establish thorough project plans, realistic deadlines, efficient resource allocation, and task-based approaches to difficult projects. This makes project execution more efficient and guarantees that all relevant tasks are recorded.
Communication that is Clear: Project managers serve as the main point of contact for all parties participating in the project. They make it easier for team members, customers, suppliers, and other key partners to effectively communicate. Clear communication prevents misunderstandings, settles disputes, and keeps all parties up to date on project developments, milestones, and adjustments.
Click below for more information :
https://youtu.be/CC7WcGWZywY
Episode 23/22: Signal Components, TypeScript 5.1
Tags: angular, webdev, javascript, programming
Published: 2023-06-08 19:03:49

Joshua Morony discusses Signal Components in Angular 17, highlighting benefits like fine-grained change detection and simplified input handling. TypeScript 5.1 is released, allowing the omission of return statements in functions returning undefined.

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

## Signal Components with Joshua Morony

Joshua Morony, a highly regarded Angular YouTuber, recently released a video discussing Signal Components, a feature expected in Angular 17. These components serve a similar role for Signals as Standalone API does for Standalone Components, forming an integral part of the Signal story.

In his video, Joshua highlights four key benefits of Signal Components. Firstly, Signal components allow us to build applications without zone.js, enabling fine-grained change detection and reducing bundle size.

Furthermore, the new input function, replacing the @Input decorator, provides the value as a Signal, eliminating the need for NgOnChanges or RxJs patterns that rely on Subject for emitting input changes. Two-way binding also becomes more straightforward, as we can create a new value using a model function and immediately use it for two-way binding, removing the requirement for separate Input and Output properties. Additionally, traditional queries for ViewChild or ContentChild can be replaced with regular function calls.

Joshua's explanation makes it clear why many lifecycle hooks become boilerplate code when using Signal components.

{% embed https://www.youtube.com/watch?v=dO6PyJqd3DI %}


## TypeScript 5.1

TypeScript 5.1 has been released. The release model of TypeScript doesn't follow the schematic versioning where a major version comes with breaking changes and a minor one adds new features. In fact, given the quite TypeScript's crucial role, breaking changes are avoided at all costs.

Notably, TypeScript 5.1 introduces the ability to omit return statements in functions returning undefined. Previously, omitting return statements were only possible in functions returning void. This change aligns TypeScript with JavaScript's behaviour, as JavaScript always returns undefined during runtime.

Other changes were more in the area of JSX. So this release is more interesting for React developers rather than for us.

{% embed https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/ %}

{% embed https://www.youtube.com/watch?v=DTYNJjKlzFs %}

## Minor Releases

We had new minor releases such as Nx 16.3, an alternative to Angular.

[Nx 16.3 ChangeLog](https://github.com/nrwl/nx/releases/tag/16.3.0)

And a CSS dinosaur, namely Bootstrap, was released in version 5.3.

{% embed https://blog.getbootstrap.com/2023/05/30/bootstrap-5-3-0/ %}
Skiff-crypto: FOSS, MIT cryptography that's easy to use
Published: 2023-06-08 19:02:56

Hi everyone! We (at [Skiff](https://skiff.com/)) are soon going to be announcing that we're publicly launching [skiff-crypto](https://www.npmjs.com/package/@skiff-org/skiff-crypto) - our open-source, MIT licensed cryptography library. It includes:
* Easy keypair generation functions - for encryption and signing
* Asymmetric encryption utility functions for strings and objects
* Symmetric encryption functions for object encryption
* Datagram object versioning functions, for creating, parsing, and versioning encrypted data
* Other utilities, like cryptographically secure hashing and random number generation

Does anyone have any feedback, suggestions, or ideas? I'm working on a full documentation site but we already have contributing guidelines, licenses, the NPM package, and a Codesandbox set up.

[GitHub link here](https://github.com/skiff-org/skiff-apps/tree/main/libs/skiff-crypto)
How You Can Find Commercial Real Estate Appraisal in USA
Published: 2023-06-08 18:50:25

I found Aipraiser as reliable [home appraisers near me](https://www.aipraiser.com/) due to their experienced professionals' services. They connect you with skilled executives who specialize in assessing the value of residential properties. Whether you're buying, selling, or refinancing a home, their platform helps you to find local appraisers who provide perfect and detailed assessments. Make your real estate transactions simpler by accessing our network of trusted [nationwide property and appraisal services](https://www.aipraiser.com/) in your area.
hey am a tunisian highchool student that wants to learn how to code
Published: 2023-06-08 18:27:38

Having been interested in computers since a kid (I am still a kid even though I am 17 years old) and summer is here, so I searched the internet for software engineering, computer science. there is many things  many many things. So I've decided to learn coding. I already have some knowledge of coding from school, like variables.. i want to know what way is best to learn coding is there like a good course cause i saw plenty courses and didn't know which best way to learn, i will appreciate you help thank you
Entendiendo JavaScript por dentro.
Tags: javascript, beginners, webdev, spanish
Published: 2023-06-08 18:12:33


![V8 representación](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zp4u3x40b6e9hbrdgy35.png)

Vamos a entender como funciona el motor interno de JavaScript V8 inventado por Google inicialmente para solucionar algunos problemas de rendimiento de Google Maps. Hay cuatro partes importantes memory heap, call stack, web apis, callback queue.

- Memory heap: Es el espacio en donde se almacenan las variables y funciones para que están disponibles dentro de nuestro programa.

![Ejemplo de varaibles y funciones](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pnpmrql1pd2l7v4u7yqm.png)
- Web API: Son las API's que están disponibles dentro de la gran mayoría de los navegadores que nos permiten realizas acciones ya sea para manipular el contenido de una página web como lo es DOM, realizar peticiones HTTP como lo es AJAX entre otras muchas cosas.
- Call stack: Es la pila de acciones pendientes de como es que se están ejecutando en el código todas las funciones que funcionaban de manera síncrona se van apilando en este espacio para que se vayan ejecutando conforme se fueron mandando a llamar.
- Callback queue: Es la pila de acciones que de las funciones asíncronas que se van apilando de acuerdo a como se fueron ejecutando y terminando, esto último es el diferenciador importante.

![GIF de funcionamiento de V8](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1x2tmqdux4xecopk7afh.gif)

Esto quiere decir que por ejemplo se mandan a ejecutar dos funciones asíncronas una después de la otra, la primera va a tardar 5 segundos (tarea A) en terminar y la segunda 2 segundo (tarea B), la primera tarea en el callback queue que se va a poner es la tarea B. Porque recordemos que acá se apilan de acuerdo a como vayan terminando. Otra cosa importante es que las funciones apiladas dentro del callback queue no se pueden ejecutar hasta el callback stack este vacío. Así sería el funcionamiento interno de como el motor V8 de JavaScript funciona. Esto quiere decir que nos JavaScript puede ejecutar asincronismo pero su funcionamiento esta pensando de forma sincrona, una tarea detrás de otra. Puedes hacer tus propias pruebas en el siguiente [link](href="http://latentflip.com/loupe).

Si este articulo te gusto o aprendiste algo nuevo te agradecería que me apoyaras siguiendo y compartiendo mi contenido. Gracias.
Meltano - TypeError: argument of type 'int' is not iterable (Solved)
Published: 2023-06-08 18:11:49

Ran into this when trying to set up imports and exports with Meltano. The bug ended up being an incorrect .yaml config.

I had:
```yaml
    config:
      host: meltano-test-cluster.[...].rds.amazonaws.com
      port:
        user: [username]
      dbname: [dbname]
```

Needed to fix to:
```yaml
    config:
      host: meltano-test-cluster.[...].rds.amazonaws.com
      port: 5432
      user: [username]
      dbname: [dbname]
```

Easy in retrospect, but the error message isn't particularly descriptive and I couldn't find much on google, so posting this!

*I work at [Akkio](https://akkio.com), a predictive AI service allowing you to do machine learning without any code! Check us out if you're interested in that kind of thing.*
Raising Exception Explained
Tags: beginners, python
Published: 2023-06-08 18:01:00

Hey everyone! I'm back with another beginner's explanation, but this time in a new language. 

For the past few weeks I've been sinking my teeth into python and learning the basic motions. Working through errors is something that every software engineer of every level has to deal with. In order to continue to run your program regardless of certain errors coming up it is important to 'Raise Exceptions'. 

Raising an exception allows you to set a default response if your program runs into some type of error. This way your entire program won't crash due to a small syntax error and based on your error message you may be able to tell where your program ran into an error.

Now let's see an example. 

Let's say you are writing a plethora of if statements to handle many conditions and situations. Your program is crashing but you're not sure where you're running into issues. Is it when you're checking if variable `x` is a string? Is it when you're making sure that the price is between set parameters? By raising an exception for each condition you can specify what message to return in the event of failure. Then handling errors without breaking code is much more simple.

```
if isinstance(x, str):
   print("X is a string!")
else:
   raise Exception("Please enter a valid string!")

##Input: 2
  Output: Please enter a valid string!

if 1 <= price <= 100
   print("The price is right!")
else:
   raise Exception("Please enter a number between 1 and 100")

##Input: 2
  Output: The price is right!
```

Without raising an exception the program would break on the user, but now it will return an error to guide them in the correct direction and provide information to guard against future errors.
Must-Have Symfony Bundles for Enhanced Functionality
Tags: symfony, bundles
Published: 2023-06-08 17:47:00

---
title: Must-Have Symfony Bundles for Enhanced Functionality
published: true
description: Here is how you can enhance your Symfony apps with must-have bundles

tags: Symfony, Bundles
cover_image: https://anastasionico.uk/img/blog/must-have-symfony-bundles-for-enhanced-functionality.jpeg
# Use a ratio of 100:42 for best results.
published_at: 2023-06-08 17:47 +0000
---
Unless you’ve been living under a rock, if you know a bit of PHP surely you came across PHP frameworks.

One of the most popular is without a doubt Symfony.

Symfony is very powerful and enables you and many other PHP developers to build robust and scalable web applications.

 

One of the key advantages of Symfony is its extensive ecosystem of bundles, which are pre-built packages that provide additional functionality and streamline the development process. 

I have already discussed what bundles are in detail in another post of mine.

 

In this article, instead, we’ll explore some must-have Symfony bundles that can supercharge your web applications and enhance their functionality. 

Whether you’re a seasoned Symfony developer or just getting started, these bundles will undoubtedly make your development journey more enjoyable and efficient.

[Link](https://anastasionico.uk/blog/must-have-symfony-bundles-for-enhanced-functionality)
Wisdom tree
Tags: pomodoro, timer, lofi
Published: 2023-06-08 17:45:21

---
title: Wisdom tree
published: true
description: 
tags: pomodoro, timer, lofi
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-06-08 17:36 +0000
---
**Features**
_Wisdom tree plays a variety of music, environmental sounds and white noises to help you concentrate. You can also import your own music into Wisdom Tree._

_3000+ quotes and lines of wisdom. You are assured that you will never see the same quote again_

_Minimal interface and navigation to increase concentration._

_Pomodoro timer_

**upcoming features**

- play music from youtube 
- Lo-Fi radio

**installation**

```py
pip install wisdom-tree
```

> https://github.com/HACKER097/wisdom-tree

**Use**

- use left and right arrows keys to change music
- To add your own musci, place it inside the res/ directory (all music must be in .ogg format) 
- use up an down arrow keys an enter to select and start Pomodoro timers space to pause and unpause.

**post reddit**

> https://www.reddit.com/r/Python/comments/og4laa/wisdom_tree_a_command_line_concentration_app/
LeetCode #155 - Min Stack
Published: 2023-06-08 17:45:08

**Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

Implement the MinStack class:

- MinStack() initializes the stack object.
- void push(int val) pushes the element val onto the stack.
- void pop() removes the element on the top of the stack.
- int top() gets the top element of the stack.
- int getMin() retrieves the minimum element in the stack.
You must implement a solution with O(1) time complexity for each function.**

Another designing stack question - another version of the painful tricky Implementing queue from stack problem. The major difference here is that the stack will possess all functions like a normal stack - push, pop, top (peek), except that there must be another data structure to store and update the minimum value of the whole stack, and return it when getMin() is called.

My initial approach was rather focused on getMin(), in which I would dynamically change the position of elements in the main stack to make sure they are in ascending order from the top down. However, this approach will prove problematic and complicated regarding other operations. 

So let's get started.

First, I initialize two empty stacks. The main stack is minStack, and the supplementary stack storing min value is stack (please excuse the naming).

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

**Push**

Since minStack acts like a normal stack, we simply push the element to minStack. With stack, we only add the element whenever it is less than stack's top element. This way, we can make sure that stack's top is always the current minimum element of the minStack.

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

**Pop**

Again, simply pop the head of minStack. If that value is equal to the head of stack, we pop the head of stack as well. 

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

**Top**

Simply return the head of minStack, in which I use Stack.peek() operation. stack is not touched in this operation.

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

**getMin**

After tons of new additions and removal from our main stack, we are guaranteed that only smaller elements are added to stack. Therefore, return stack's head element.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9whc7ulfcbd4nou4h469.png)
Creating a quick sticky footer for LazyColumn in Jetpack Compose
Tags: mobile, android, kotlin, tristan
Published: 2023-06-08 17:30:17

### Table of contents
1. [The problem](#prob)
2. [Creating the sticky footer](#foot)
3. [Issues with the code](#issues)



### My app on the Google Playstore
- [HERE](https://play.google.com/store/apps/details?id=com.elliottsoftware.calftracker)

### GitHub code <a name="github"></a>
- [HERE](https://github.com/thePlebDev/CalfTracker)


### Introduction <a name="intro"></a>
- This series will be an informal demonstration of any problems I face or any observations I make while developing Android apps. Each blog post in this series will be unique and separate from the others, so feel free to look around.



### The problem <a name="prob"></a>

- If you an have worked with the [LazyColumn](https://developer.android.com/jetpack/compose/lists#lazylistscope) like myself then you are probably familiar with the [stickyHeader](https://developer.android.com/jetpack/compose/lists#sticky-headers). Which allows us to create code like this:
```
LazyColumn {
            stickyHeader {
               Text("BEHOLD THE STICKY HEADER!")
                }
            items(35) { index ->
                Text(text = "Item: $index",fontSize = 30.sp)
            }

        }

```
- The code above will allow the header to stay on screen even when the user scrolls to the bottom of the LazyColumn
- But where is the `stickyFooter`?!?!?!


### The Sticky footer <a name="foot"></a>
- As it turns out there is no `stickFooter{}` api, which is a little disappointing. But that means we just have to get a little creative with the [Box](https://developer.android.com/jetpack/compose/layouts/basics#standard-layouts) composable. Ultimately we are just going to wrap a Box around out `LazyColumn` and just position out footer code at the bottom of the box. Like so:
```
@Composable
fun FooterTesting(){
    Box(modifier = Modifier.fillMaxSize()){
        LazyColumn(){
             stickyHeader {
                  Text("BEHOLD THE STICKY HEADER!")
                }
            items(35) { index ->
                Text(text = "Item: $index",fontSize = 30.sp)
            }
        }
        Column(
            modifier = Modifier.fillMaxWidth().align(Alignment.BottomCenter).background(Color.Red),
        ){
            Text("It is I, The Sticky Footer", fontSize = 30.sp)
        }

    }

}

```
- There are two things I want to point out here. `1)` The Box is wrapped around the LazyColumn. `2)` Out sticky footer code is outside of the LazyColumn but inside the Box


###Issues with this code: <a name="issues"></a>
- If there are any issues they can be found [HERE](https://issuetracker.google.com/issues/198165609) on the google issue tracker

### Conclusion
- Thank you for taking the time out of your day to read this blog post of mine. If you have any questions or concerns please comment below or reach out to me on [Twitter](https://twitter.com/AndroidTristan).
Switching from Linux Mint to an Arch-based Distro - Part 2: The Shortlist
Tags: linux, archlinux, manjaro, garudalinux
Published: 2023-06-08 16:53:54

I decided to switch from Linux Mint to an Arch-based distro. I compiled my shortlist of distros I want to have a closer look at mainly from recommendations by friends and colleagues and which seem to meet my requirements:

- _stable_: I use my notebook everyday for development, so it must just work reliably and I don't want to spend much time fixing issues.
- _btrfs_: Since many years I've been using btrfs for both root and home partition (sub volumes in fact) and I'm really happy. btrfs has very handy features, first of all volumne snapshots (see next point also), compression and copy on write.
- _automated system snapshots_: #linuxmint has the very nice Timeshift tool included and at the (very few) occasions where an automated updated (or I) did crash something, I could simply boot into an previous snapshot within seconds and without needing to copy backups around. I really don't want to miss this!
- _flexible_: I like to have a very tailored work environment, so tweaking should be possible
- _documentation and community_: As I never did use Arch Linux before, I'm pretty sure I need some help to get along from time to time. And good documentation is an important aspect.

## The Candidates

Mainly based on the recommendations from friends and colleagues, I came up with this short list of arch-based distributions, I want to have a closer look at:

- [Manjaro](https://manjaro.org/) has been recommended to me by several people. It seems to be well integrated and I like the idea that their repo is a bit better tested than the original Arch repo, where I heared that it's a bit too cutting-edge sometimes... I need a system that is reliable as possible as I use it every day for development and I just don't want to invest time in fixing issues. A while ago I did a test install of Manjaro on my previous notebook and this worked well out of the box. For my test I downloaded manjaro-kde-22.1.0.
- [EndeavourOS](https://endeavouros.com/) seems interesting, because it offers quite a lot of flexibility. I like the idea that you can choose your primary desktop environment during installation, but also add others you want to give a try. And also configure the packages you want to install. For my test I downloaded the EndeavourOS_Cassini_Nova-03-2023_R1.iso
- [Garuda Linux](https://garudalinux.org/) might not be as popular as the other two. I think I found it while looking for some btrfs tool. As I want a smooth btrfs experience, I decided to try this as well and downloaded garuda-dr460nized-linux-zen-230501.iso.

So, let's see how I get along with them.