teleren/devto huggingface dataset:
Bot Framework Composer Backchannel event for welcome card
Published: 2022-07-05 10:50:30

---
title: Bot Framework Composer Backchannel event for welcome card
published: true
date: 2021-07-16 15:14:10 UTC
tags: 
canonical_url: https://lkgforit.com/bot-framework-composer-backchannel-event-for-welcome-card
---

In Bot framework chatbot development using Bot framework composer there is option to trigger welcome event on user added event, but in situation we need a backchannel event from client webchat, for example if you develop a chatbot for different localization in different languages then you need this event.

Because what happens is, the welcome event will be triggered on user added then the locale won't be passed at that time, so we can't provide welcome card on user added event. We need a custom event for that from client webchat.

We can do this by following this blog.

This is my code; I'm utilizing the Web Chat control:

```
var dl = window.WebChat.createDirectLine({
        token: '[token]'
    });

    window.WebChat.renderWebChat(
        {
            directLine: dl,
            userID: 'YOUR_USER_ID',
            username: 'Web Chat User',
            locale: 'en-US',
            botAvatarInitials: 'WC',
            userAvatarInitials: 'WW'
        },
        document.getElementById('webchat')
    );

    window.setTimeout(function () {
        dl.postActivity({ type: "event", value: "hello", from: { id: "me" }, name: "PageLoaded" })
            .subscribe(id => console.log("success"));
    }, 5000);

```

The composer then receives it with an "Activity Event" trigger using below screenshots.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1626448330258/ifHyncVOa.png)

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1626448336182/6pzfTUuQX.png)

Reference:

[https://github.com/microsoft/BotFramework-Composer/issues/4451](https://github.com/microsoft/BotFramework-Composer/issues/4451)
The Complete Java Tutorial - Installing Java
Tags: java
Published: 2021-07-16 15:12:01

###### Step 0: Un-Install Older Version(s) of JDK/JRE
###### Step 1: Download JDK from official [website](https://www.oracle.com/in/java/technologies/javase-downloads.html)
![Screenshot 2021-07-16 191051](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/09dsqlrihqq79nhvhqcp.png)
![Screenshot 2021-07-16 202339](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1twl9p4bi0787zvi5jtm.png)
###### Step 2: Download code editor
Popular code editors for java
+ Netbeans - [Download](https://netbeans.apache.org/download/index.html) - [Tutorial](https://youtu.be/vt7_6HwCFOU)
+ Eclipse - [Download](https://www.eclipse.org/downloads/) - [Tutorial](https://youtu.be/N-wXTRpR03U)
+ IntelliJ - [Download](https://www.jetbrains.com/idea/download/#section=windows) - [Tutorial](https://youtu.be/EMLTOMdIz4w)
  
You can download code editor as per your wish!
The Complete Java Tutorial - Introduction
Tags: java
Published: 2021-07-16 15:09:48

Hey folks let's learn Java.

# Introduction & Motivation

Java is a MUST for students and working professionals to become a great Software Engineer specially when they are working in Software Development Domain. 

I will list down some of the key advantages of learning Java Programming:

+ **Object Oriented**
In Java, everything is an Object.

+ **Platform Independent**
Java compiled code(byte code) can run on all operating systems.

+ **Simple**
Java is designed to be easy to learn. If you understand the basic concept of OOP Java, it would be easy to master.        

+ **Secure**
With Java's secure feature it enables to develop virus-free, tamper-free systems.

+ **Portable**
Java programs are portable, which means that the same bytecode program can run on any computer system that has a Java interpreter.

+ **Robust**
Java is considered as a robust and strong programming language as it features strong memory management and since Java doesn't use any types of pointers.
The Cost of Delays
Tags: agile, productmanagement
Published: 2021-07-16 14:54:35

###### I am always posting provoking post on my Linkedin, and I have decided to replicate those here. [Let's socialize!](https://www.linkedin.com/in/alexsandro-souza-dev)

The only way not to wind up late, on a long enough timeline, is never actually to have deadlines.

The agile movement has encouraged us to minimise, if not eliminate, deadlines. That is achieved by incremental value delivery and shipping often to production. 

That approach does a great job of eliminating artificial deadlines, but delays will still exist, and we need to be aware of the Cost of Delay to help define product priorities.

"We need Cost of Delay to evaluate the cost of queues, the value of excess capacity, the benefit of smaller batch sizes and the value of variability reduction. Cost of Delay is the golden key that unlocks many doors. It has an astonishing power to totally transform the mindset of a development organisation."  - Reinertsen, Donald.

The cost of delay can vary depending on the situation, and its cost is not always money.

Be mindful of your product and your market. Always be surrounded by intelligent people with the correct information to help you make the best decisions.
Pssst, I got a surprise for you 😏
Tags: showdev, css, webdev
Published: 2021-07-16 14:53:46

---
title: Pssst, I got a surprise for you 😏
published: true
description: 
tags: showdev, css, webdev
cover_image: https://images.unsplash.com/photo-1610813328411-8f6ff3185f6b?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80
---

Yeah, I got a pretty seductive and exciting surprise, just for you... And that's surprise is such a fancy hover animations !! 

Owwwww, so cuuuuuute 😍 

{% codepen https://codepen.io/JeremyMonatte/pen/xxdVzNX %}

Isn't she beautiful ?

French version of this post just here : 
{% link https://dev.to/jeremymonatte/pssst-j-ai-une-surprise-pour-vous-5m8 %}
Pssst, J'ai une surprise pour vous 😏
Tags: showdev, css, webdev, french
Published: 2021-07-16 14:53:28

---
title: Pssst, J'ai une surprise pour vous 😏
published: true
description: 
tags: showdev, css, webdev, french
cover_image: https://images.unsplash.com/photo-1610813328411-8f6ff3185f6b?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=800&q=80
---

J'ai une surprise pour vous, tout en grâce et en élégance, aguicheuse mais jamais vulgaire, et qui n'attends que vous...
Et cette surprise n'est autre qu'une incroyable animation de hover !!
Si belle, Oooowww je fond 😍

{% codepen https://codepen.io/JeremyMonatte/pen/xxdVzNX %}

N'est ce pas MAGNIFIQUE ?

Vous pouvez retrouvez la version anglaise de ce post juste ici :
{% link https://dev.to/jeremymonatte/pssst-i-got-a-surprise-for-you-2ff %}
New Meetup group and an upcoming kick-off event
Tags: online, gamedev, meetup, js13k
Published: 2021-07-16 14:53:06

---
title: New Meetup group and an upcoming kick-off event
published: true
date: 2021-07-16 14:41:24 UTC
tags: online,gamedevelopment,meetup,js13k
canonical_url: https://medium.com/js13kgames/new-meetup-group-and-an-upcoming-kick-off-event-db7eacd21942
cover_image: https://cdn-images-1.medium.com/max/1024/1*YhqAjNEmGDXDpRMJ5oEw6w.jpeg
---

I’m pleased to announce that we’re continuing with the online kick-off and awards ceremony events together with [Sascha Depold](https://twitter.com/sdepold) from [eBay](https://tech.ebayinc.com/?utm=derd-js13k), and this time we’re moving to [our new home on the Meetup platform](https://www.meetup.com/js13kGames).

If you remember the events from last year, then nothing much is going to change, as the format serves us well. [Sascha Depold](https://twitter.com/sdepold) from [eBay](https://tech.ebayinc.com/?utm=derd-js13k) is going to be our host for both the opening kick-off meetup and the closing awards ceremony. The difference is that we’re moving away from [eBay Europe Technology](https://www.meetup.com/eBay-Europe-Technology) group to **our own** at [Meetup.com/js13kGames](https://www.meetup.com/js13kGames). It’s still going to be organized together with eBay though!

You might’ve noticed the formal creator of the group itself is [meet.js](http://meetjs.pl) - they host our on-site [Gamedev.js Warsaw](https://www.meetup.com/GamedevJS-Warsaw/) meetups as we’re part of the bigger JavaScript family here in Poland. We’re thankful to them for providing us the resources we needed.

Please [join us online](https://www.meetup.com/js13kGames/events/279507301/) on August 13th at 6 PM GMT+2 so we can celebrate the tenth edition of the js13kGames competition together! Also, three days later we’ll conduct an [online workshop](https://www.meetup.com/js13kGames/events/279508540) for all who don’t know how to start, but want to participate anyway. See you there!
Do developers still use PHP?
Tags: php, discuss, healthydebate
Published: 2021-07-16 14:37:25

---
title: Do developers still use PHP?
published: true
description: I'm curious to hear from the up-and-coming readers of DEV: are you still using PHP? If so, what do you use it for? 
tags: php, discuss, healthydebate
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nneiuoh2bn7uszvyaztp.png
---

*Cover image by Camilo Sanches, CC BY-3.0, via Wikimedia Commons*

I was working on a meetup for serverless developers recently and an attendee mentioned the Symfony PHP framework, and how there was actually a runtime to run PHP serverlessly on AWS!

Pretty impressive stuff, but I'm curious to hear from the up-and-coming readers of DEV: are you still using PHP? If so, what do you use it for? 

Are you using it because you're stuck with the framework at your place of work, or are there things you love about it?

**note:** My DEV articles are *not* places to make fun of other developer's skills. Any dismissive or derogatory comments will be deleted and the posting account reported.
How to install Docker on Ubuntu 18.04
Tags: ubuntu, docker
Published: 2021-07-16 14:35:30

---
title: How to install Docker on Ubuntu 18.04
published: true
description: Install Docker on Ubuntu 18.04
tags: #ubuntu, #docker
cover_image: https://res.cloudinary.com/dvehkdedj/image/upload/v1626446019/woodcuts_sekka_3_xlbawm.jpg
---

Docker is a set of platform as a service products that use OS-level virtualization to deliver software in packages called containers. You can references to documents at this [https://www.docker.com/](https://www.docker.com/) .

**Step 1: Need to update software repositories. Run the following command:**

> sudo apt-get update

**Step 2:  Install Docker on Ubuntu 18.04**

To install latest version you can run command

> sudo apt install docker-ce docker-ce-cli [containerd.io](http://containerd.io/)

To install specific version docker

> apt list -a docker-ce


Then install specific version

> sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> [containerd.io](http://containerd.io/)

You can verify Docker service after install. It is start automation when install completed

> sudo systemctl status docker


**Step 3: Execute docker on-non root user**

> sudo usermod -aG docker $USER

Finally, you can make verify docker is install success

> docker run hello-world


**Uninstall docker** 

To stop all running containers and Docker instance

> docker container stop $(docker container ls -aq)

> docker system prune -a --volumes

Now uninstall Docker as any other package installed with apt

> sudo apt purge docker-ce

> sudo apt autoremove


### **Conclusion**

In this post I will introduction way to install docker on Ubuntu 18.04. To learn more about Docker you, check out official [Docker Offical Document](https://docs.docker.com/)

If you have any question please comment or contact me.

Author: @NHB Khanh 

Facebook: [facebook.com/khanhnhb](https://www.facebook.com/pi.ke.1044/)

Email: khanhnhbse@gmail.com
T-SQL: How To Write A Cross Apply and Why
Tags: sql, tutorial, database
Published: 2021-07-16 14:35:29

In our series, we've looked at how we can match data using relationships, or find data that don't match based on conditions, and even compare data to itself. What if we wanted to look at a data point relative to every other data point in a data set? While we have already discussed ways in which we could do this that might take extra effort, one way in which we could accomplish this is the CROSS APPLY functionality. This functionality allows us to bypass any iterative approach with loops so that we can run a comparison based on the condition that we specify. In the video, [SQL Basics: How To Use A CROSS APPLY and Why](https://www.youtube.com/watch?v=_5qrYAQoeLw&list=PLHHm85xMQAYNScEs-nu9gzi2uoQ9JCCYA&index=6) we look at using the CROSS APPLY functionality.

Some questions that are answered in the video:

- For this video, we use a self join table since our join will only involve one table. Since we join the table onto itself, any column that we use in the join condition will match provided that we don't change any part of the condition (which we do in our example and I show why).
- As a quick reminder, not all SQL languages may support the exact syntax shown. Different SQL languages may have different approaches to solving the same problem or developing the same solution.
- Similar to joins, notice how the condition that we specify affects the results.
- When we use CROSS APPLY with our self-join table, what is the result? How could this result be useful in situations where we want to see this with data sets?
- Considering what we've learned previous with INNER JOINs, LEFT JOINs, and SELF JOINs, where may CROSS APPLY be used inappropriately?

Results of all data per row of data can be extremely useful because there are situations where we may want to look at data in this way. What is key is that we ensure that's the outcome we want and we also ensure that we've constructed our tables in a manner that gets us the best performance.

One of my favorite examples of CROSS APPLY being used (and a common query that I regularly return to) is: SELECT session_id SessionID , [text] QueryText FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle)This gets us the actual SQL query text being run for every transaction and this happens because in the CROSS APPLY we're passing in the sql_handle. Another example of CROSS APPLY being useful in business is when we want to compare a timeframe's performance (ie: monthly) to every other relative timeframe's performance - so the sales' numbers of a particular month relative to every other month's sales numbers.

For more SQL lessons, you can continue to watch the [SQL Basics](https://www.youtube.com/watch?v=Ied5YaCu_-0&list=PLHHm85xMQAYNScEs-nu9gzi2uoQ9JCCYA&index=1) series.
Real-time Web chat example with Angular and MongoDB
Published: 2021-07-16 14:33:07

We have developed an example Web application made with Angular 12 that uses [RESTHeart](https://resheart.org) WebSockets with MongoDB Change Streams to provide an instant, zero lines of code API for a realtime chat application:

- https://chat.restheart.org

In short, RESTHeart leverages MongoDB's Change Streams to instantly notify database modifications to clients (Web or Mobile apps), through the WebSocket protocol.

RESTHeart is an open-source runtime and a low-code SDK for Microservices with declarative security and instant Data APIs on MongoDB or any compatible database (e.g. Percona Server for MongoDB, AWS DocumentDB and Azure Cosmos DB).

The complete source code of this Angular Web application is available on [GitHub](https://github.com/SoftInstigate/restheart-webchat). The most interesting thing, IMO, is that the server-side source code necessary to deploy this example is zero. You need to start MongoDB, configure RESTHeart and just start writing client-side code.

Below an article which describes this demo with more details:

- https://www.softinstigate.com/en/blog/posts/restheart-webchat/
Github student pack 
Tags: github, webdev, student, programming
Published: 2021-07-16 14:22:30

Hi Everyone I am Bilal Bajou Student in BTS Information System Development I want to share with you a pack Provided by github Free For Developers and IT students
So Github Student Pack gives students free access to the best development tools in one place so they can learn by doing.
If you are a student, feel free to apply to get this free pack
Note: During the registration process you will need a certificate to prove that you are still a student

Link Of A Video Explains The Registration Method:
https://www.youtube.com/watch?v=0p6eVCIjYgs

Finally, do not hesitate to contact me If you have difficulty registering
🖥 Session aliases with tmux
Tags: tmux, bash
Published: 2021-07-17 01:18:29

---
title: 🖥 Session aliases with tmux
published: true
date: 2021-07-16 14:16:00 UTC
tags: 
- tmux
- bash
canonical_url: https://www.gozgeek.com/posts/2021/session-aliases-with-tmux/
---

I use tmux as my screen multiplexer, and in the past, I used `control-A d` to disconnect and `tmux a -d` to reattach to the session. This gets cumbersome if I haven’t created a tmux session yet, since `tmux a -d` will give me an error that no session exists.

## Aliases to the rescue

To help start sessions, and now name them, I use the following alias:

```
alias tma="tmux new -ADs"
```

To create a session named `main` or re-attach to a disconnected session, I can now type `tma main`. The alias will create a session named `main` if one doesn’t exist, or reconnect to the session named `main`. This also makes it easy to create named tmux sessions without having to remember the syntax.
I recreated Apple iCloud in two hours!
Tags: webdev, ios, wordpress, webassembly
Published: 2021-07-16 13:08:44

I've always love the Apple iClouds web design, it looks so clean and modern, so I decided I'm gonna try recreate the home page in one day. I've spent two hours and this is where I'm up to so far: https://apple.thebloodylegend.com

![https://apple.thebloodylegend.com](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jclxeuuf8935t3mqjueg.png)

I built it using WordPress Elementor, I first did the main elements, and will soon brush up everything I missed, like the padding in between the images, some of the images themselves etc.

I plan on continuing and recreating a basic version of the rest of the website, can't wait to see how this goes!
tmux last session
Tags: techtalks, tmux, linux
Published: 2021-07-16 13:02:52

---
title: tmux last session
published: true
description: 
tags: techtalks, tmux, linux
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbe7s11y8p8uavsxzz4y.png
canonical_url: https://waylonwalker.com/tmux-last-session/
series: tmux
---

An ultimate productivity key-binding in tmux is one to switch to the last session.  I use this to quickly get between sessions really quick.  Often I am working and need to lookup a quick note, or copy something into my notes, then get back to where I was quickly.

``` bash
bind -n M-b switch-client -l
```

I think of this hub and spoke model, and use `last-session` to quickly drive it.

![hub and spoke](https://images.waylonwalker.com/tmux-nav-hub-spoke.png)

---

Be sure to check out the full youtube playlist and subscribe if you like it.

https://www.youtube.com/playlist?list=PLTRNG6WIHETB4reAxbWza3CZeP9KL6Bkr


{% post https://dev.to/waylonwalker/how-i-navigate-tmux-in-2021-2ina %}

> Also check out this long form post for more about how I use tmux.
Conference Organisers & Community Discounts
Tags: europython, community, organisers
Published: 2021-07-16 12:40:46

The [EuroPython Society (EPS)](https://www.europython-society.org/) exists not only to run the EuroPython Conference, but also to support the wider Python community in Europe. It accomplishes this in many ways; here are two of them!

![image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ql0argq7knx56gmsqdzb.png)
 
# Organisers' Lunch
We have an open invitation for organisers responsible for other Python conferences around Europe to attend lunch with us. The aim is for us all to get to know each other and share advice on running events, as well as determine how we, the EPS, can support other events.

To enable this, we are offering one free conference ticket per conference team, to ensure that each event can send a representative. If you would like to avail of this, please email board@europython.eu to introduce yourselves, your event and the background of your team.

The lunch is planned for the Thursday or Friday of the event, and finalised details will be announced closer to the conference.

# Community Discounts
In addition to the aforementioned lunch, we would also like to support individuals who attend conferences and smaller user groups around Europe. Although we cannot offer free tickets, we would like to offer discounted tickets to local communities.

If you are a regular attendee to Python events, please direct your local organisers to this post; they may submit a request for this community discount, and will be responsible for distributing them to the people who attend their events.

If you are responsible for organising Python events, please reach out to board@europython.eu in order to obtain a discount code for your attendees, encouraging them to engage with the global Python community.

These discount codes will provide 10% off all ticket prices; they are intended for groups of 30-50 members, but we can provide codes for larger groups as long as this requirement is mentioned in your initial contact email.

Enjoy,
[EuroPython 2021 Team](https://ep2021.europython.eu/europython/team/)
[EuroPython Society](https://www.europython-society.org/)
[EuroPython 2021 Website](https://ep2021.europython.eu/)
UX-Toolbox: Doherty's Threshold
Tags: uxengineering, ux
Published: 2021-07-16 12:35:41

Ever visit a site to find that loading the content takes forever?

Or worse, you clicked on the submit button, expecting to be greeted by a loading spinner and a new page, instead you see the same page and nothing happens. After a few seconds, the page suddenly changes without warning.

This feeling of frustration is what we are looking into today.

In this article I want to introduce to you the UX-effect known as Doherty's Threshold.

#Take-Aways
* Keep the response time of your application to around 400ms - this will keep people engaged with the task
* Use loading spinners and progress-bars to keep people engaged when waiting times have to be longer

#What is Doherty's Threshold?
It was named after IBM Researcher Walter J. Doherty who discovered that when the response time of the system was quicker, the overall efficiency of the process improved.

This means a person does not have to wait for a response but receives the cues for the next step toward completing the task.

People are not waiting for the system to respond, but can smoothly transition to the next step, keeping their train-of- thought.

Increasing the response time will not only cause frustration, if no visual feedback in the form of loading spinners or progress bars are presented but will most likely result in rage-clicking.

Not good.

Which is why you should always include some form one indication that work is being in the background - one of the most important Usability Heuristics outlined by Jakob Nielsen.

That way the person is receiving visual feedback in response to their action.

This makes the person feel more at ease and builds trust in your product.

The ideal response time of a system has been measured at around 400ms. 

Keeping the response time at this level allows the person using the system to flow between steps and efficiently achieve the task they set out to complete.

#Conclusion
This effect demonstrates well how important it is to give the person using your product feedback in response to their action. Particularly, when this action will require longer loading times.

This will simply allow them to know that everything is working and that currently the system is loading.

Comment down below your most frustrating user-experience you have had.