teleren/devto huggingface dataset:
About APIs; backend performance metrics; & learnings from continuous deployment
Tags: todayilearned, deployment, api, performance
Published: 2019-12-03 13:08:47

*TL;DR style notes from articles I read today.*

### [From API craftsmanship to API landscaping](http://bit.ly/2OoGZIc)

- Don’t let a fear of having too many APIs limit you. Some APIs will die while others will flourish with natural selection.
- The effectiveness of your APIs should be felt and not seen. Changes in how consumers use APIs should be invisible to producers and vice versa.
- Moat your APIs with a robust, organization-wide security strategy.
- Allow your APIs to be discovered depending on whether they’re public, partner-facing, or private. 
- Use a sound versioning strategy.
- Build your API ecosystem in a way that it can still work even if one is broken.

*[Full post here](http://bit.ly/2OoGZIc), 5 mins read* 

---

### [Learnings from the journey to continuous deployment](http://bit.ly/2qF5zLR)

- Incremental changes result in easily maintainable products. 
- Releasing with smaller changes at regular intervals brings value to customers faster and provides early feedback on future tasks.
- Improve code quality by writing quality tests and setting up comprehensive test strategies for the entire build and deploy pipeline. 
- Improve integration testing in the staging environment to detect issues related to dependencies.
- Monitoring critical parameters such as system load, API latency, and throughput are vital to assess the health of the software.

*[Full post here](http://bit.ly/2qF5zLR), 5 mins read* 

---

### [Back-end performance, those metrics we should care about](http://bit.ly/2OIUHV6)

- The latency requirement should correspond to the specific service type.
- There is a strong correlation between throughput and latency in a performance test. Latency increases with the growth of throughput.
- Normally network issues like congestion-caused errors should not exceed 5% of the total requests, and application-caused errors should not exceed 1%.
- As the CPU determines a server’s performance, a high *sy* means the server switches between user mode and kernel mode too often, which is bad for overall performance.
- Frequent reading or writing the disk could cause long latency and low throughput.

*[Full post here](http://bit.ly/2OIUHV6), 10 mins read* 

---

*[Get these TL;DR style notes directly to your inbox every weekday by signing up for my newsletter, in.snippets(), here.](https://mailchi.mp/appsmith/insnippets?utm_source=devto&utm_medium=post08&utm_campaign=is)*
(Video) Advent of Code - Introduction to the Advent Calendar for Devs
Tags: adventofcode, adventofcode2019, video, kotlin
Published: 2019-12-03 12:59:30

## Advent Of Code is BACK baby!

![Christmas Elves Dancing](https://media.giphy.com/media/kcrPLLeGJjgswu47h9/giphy.gif)

Ladies and Gentlemen, its now officially December, which means its time to open your Advent Calendar doors and get a tasty treat every day leading up to Christmas! However I want to tell you that there is an Advent Calendar for Developers...

https://adventofcode.com/

Its a fantastic site where everyday of December a new coding challenge is unlocked for you to try and solve... The challenges are based on fun christmas-y type themes like santa and his elves and also importantly is completely language agnostic, meaning that you can use whatever programming language, development environment, frameworks & IDEs you like... Everyday a logical/mathematical problem is served to you and you can write code to try and solve it then return to the site afterwards to input your answer!

It is great fun and also lets you flex your coding muscles every single day of Advent! Id really recommend every to get involved and give it a go and of course you can sign in with your github account in order to save & track your progress. Let me know in the comments down below if you are up to date with your adventofcode calendar tasks...

Here's a video to explain it and also give you a brief demo into Day 1's problem with a quick Kotlin solution...

Enjoy...(P.S I had far too much fun making this one ;) )

{% youtube rcohwysX1E8 %}

Links from the video ======================

Advent of code website (Link to this year's challenge):
https://adventofcode.com/2019

IntelliJ - The IDE that I used to code in the video:
https://www.jetbrains.com/idea/

Kotlin Programming Language - The Language I used in the video:
https://kotlinlang.org/

## Onwards

If you have ANY feedback or questions at all please reach out to me in the comments below or reach out to me on twitter:

[My Twitter (@ben_kadel)](https://twitter.com/ben_kadel)

Thanks for reading and possibly watching!
What are the topics designers will talk about in 2020?
Tags: ux, design, frontend, productdesign
Published: 2019-12-03 12:52:57


###We at the [UX Collective](http://uxdesign.cc) have seen quite a lot this year. After curating and sharing 2,411 links with 358,917 designers all around the world, we have identified a few of the trends our industry has been writing, talking, and thinking about. 

What's top of mind for your design friends this year? What are the tools we're paying attention to, the ways we're collaborating with other teams, the career challenges we're facing? 

This is our fifth consecutive year publishing a trends report: [The State of UX in 2020](http://trends.uxdesign.cc). The response we received last year from the half million people who read our report was so positive it inspired us to go even further in our exploration. 

The landscape is somewhat different from last year's, though. While in 2019 the design community reflected on how the experiences we create can impact the world (from enabling [tech addiction](https://essays.uxdesign.cc/tech-diet/) to influencing democratic elections), this year's report carries a more positive outlook: 2020 is the year of pragmatic optimism. It is the year for designers to conscientiously improve not only the digital products people use every day, but also our companies and our industry.

We are looking forward to how design will evolve in 2020. Meanwhile, here is our review of the past and analysis of the present, with an ever-watchful eye on the future of UX:

1. Designing for the post-truth era
2. The rise of micro-communities
3. Design as a team sport
4. Rendering intentionality
5. The death of design files
6. Rediscovering information architecture
7. Embracing new superpowers
8. Invisible design systems
9. Designers, unite

Here's the link to the full report:

https://trends.uxdesign.cc/
Complexidade de algoritmos - Notação Big O
Tags: complexidade, bigo, algoritmo, limite
Published: 2019-12-03 12:46:54

![Notação Big O](https://thepracticaldev.s3.amazonaws.com/i/ctirs1r20bwadq2igxdm.jpg)

A notação assintótica (Big O), em Ciência da Computação, é usada para classificar algoritmos em relação as mudanças de desempenho quanto ao tamanho da entrada. É um método de descrever o comportamento de limites, matematicamente falando.

A ideia é usar a letra O seguida de uma função sobre n que descreva o crescimento de um algoritmo, no gráfico. Quanto mais rapidamente crescer o número de operações para processar os itens, pior será o desempenho do algoritmo.

![gráfico de crescimento de complexidade](https://thepracticaldev.s3.amazonaws.com/i/9f7ruqkkz9xl0937b1nf.png)

A complexidade **O(1) (constante)** é aquela em que não há crescimento do número de operações, pois não depende do volume de dados de entrada (n). Por exemplo: o acesso direto a um elemento de uma matriz.

A complexidade **O(log n) (logaritmo)** é aquela em que o crescimento do número de operações é menor do que o do número de itens. Exemplo: caso médio do algoritmo de busca em árvores binárias ordenadas.

A complexidade **O(n) (linear)** é aquela em que o crescimento no número de operações é diretamente proporcional ao crescimento do número de itens. Por exemplo: o algoritmo de busca em uma lista/vetor.

A complexidade **O(n log n) (linearitmica ou quasilinear)** é aquela em que é resultado das operações (log n) executada n vezes. Exemplo: o caso médio do algoritmo de ordenação Quicksort.

A complexidade **O(n^2 ) (quadrático)** é aquela que ocorre quando os itens de dados são processados aos pares, muitas vezes com repetições dentro da outra. Com dados suficientemente grandes, tendem a se tornar muito ruim. Por exemplo: o processamento de itens de uma matriz bidimensional.

A complexidade **O(2^n ) (exponencial)** é aquela em que a medida que n aumenta, o fator analisado (tempo ou espaço) aumenta exponencialmente. Não é executável para valores muito grandes e não são úteis do ponto de vista prático. Exemplo: busca em uma árvore binária não ordenada.

A complexidade **O(n!) (fatorial)** é aquela em que o número de instruções executadas cresce muito rapidamente para um pequeno número de dados. Por exemplo: um algoritmo que gere todas as possíveis permutações de uma lista.
📄 Open source promotion cheat sheet is available in 8 languages
Tags: opensource, showdev, tutorial, beginners
Published: 2019-12-03 12:33:26

In September, [Thomas Betous](https://github.com/tbetous) and [Franck Abgrall](https://github.com/kefranabg) released their [open source promotion cheatsheet](https://github.com/zenika-open-source/promote-open-source-project). It is a compilation of good practices that help their open source projects gain popularity (read more in the [article](https://dev.to/kefranabg/cheat-sheet-how-to-promote-your-open-source-project-4flh) they wrote back then).

Since then, it has been translated in 8 languages:

- [English](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README.md)
- [French](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-fr.md)
- [German](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-de.md)
- [Spanish](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-es.md)
- [Portuguese](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-pt.md)
- [Persian](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-fa.md)
- [Simplified Chinese](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-zh-cn.md)
- [Traditional Chinese](https://github.com/zenika-open-source/promote-open-source-project/blob/master/README-zh-tw.md)

Thanks to all [contributors](https://github.com/zenika-open-source/promote-open-source-project#%EF%B8%8F-contributors) that participated to this guide!

You don't find your own language? Feel free to open a pull request with a translation 🙏

It is also available as [pdf](https://github.com/zenika-open-source/promote-open-source-project/blob/master/pdf/cheat-sheet.pdf) (only in english):

![cheatsheet](https://raw.githubusercontent.com/zenika-open-source/open-source-promotion-cheat-sheet/master/imgs/cheat-sheet.jpg)

## More guides

We are writing more guides about open source and its ecosystem. They are available in our [open source white paper](https://github.com/zenika-open-source/open-source-white-paper).

## Show your support

Do not hesitate to support us if this helped you:

- [Share the cheat sheet on twitter](https://twitter.com/intent/tweet?text=How%20to%20promote%20your%20open-source%20projects%20@ZenikaOSS&url=https://github.com/zenika-open-source/open-source-promotion-cheat-sheet&hashtags=OpenSource,CheatSheet)
- [Contribute to the cheat sheet to improve it](https://github.com/zenika-open-source/promote-open-source-project/blob/master/CONTRIBUTING.md)
- [⭐️ the github repository](https://github.com/zenika-open-source/promote-open-source-project)
ChartJS Tutorial With ASP.NET Core 2.2 Razor Pages
Tags: dotnet, javascript, beginners, tutorial
Published: 2019-12-03 12:29:26

In my first project realized in .NET Core Razor pages, I began experimenting with Chart JS, which is a Javascript library for generating charts.
That's how I ended up writing this tutorial, which needs the following prerequisites:
1. beginner level .Net Core Razor pages
2. intermediate Javascript
3. download https://cdn.jsdelivr.net/npm/chart.js@2.8.0/dist/Chart.bundle.min.js and place it into wwwroot folder, js subfolder
4. you can download source code: https://github.com/zoltanhalasz/ChartJSTutorial
5. A more detailed version of this is on my personal blog: https://mydev-journey.blogspot.com/2019/12/chartjs-tutorial-with-aspnet-core-22.html
6. I suggest you check the tutorials for Razor pages before. See resources:
https://mydev-journey.blogspot.com/2019/11/razor-pages-not-for-shaving.html


The application is live under: https://chartjstutorial.zoltanhalasz.net/

Steps for the application, shortly described, to follow the code in the repo:

**A. Create a new Web Application (.Net Core 2.2, Razor Pages Type)**
This is the default type web application, and we will use this due to its simplicity. There will be only one page, Index, which is by created default.

**B. Create the class of InvoiceModel**
This is the main model, the entity for list of invoices. The second class there will be used to provide data to the Chart, is see point E below.

**C. Create Service that loads data in Invoice Model**
We will not spend time to use a database, but instead, load manually some data into the list.
Then, insert the service into Startup.cs

**D. Index page - lists all invoices from above list**
Index page - draws the chart using Javascript
If you check the code above, you can see the canvas with the chart. Then there is the Javascript code, that uses the Chart.js mechanism.

**E. Code behind, backend for Index page:**
OnGet method - loads the invoice list to be displayed in the page
OnGetInvoiceChartData method - is the backend for the fetch at point D in the JavaScript Code. It will provide JSON data in order to be displayed with the list.

I hope you liked this tutorial, please ask me if something needs to be clarified.
How To Test Custom State Hook - Custom Hooks ReactJS Mini Course Part 4
Tags: react
Published: 2019-12-03 11:00:40

---
title: How To Test Custom State Hook - Custom Hooks ReactJS Mini Course Part 4
published: true
description: Welcome to ReactJS Custom Hooks Mini Course. In this course we'll learn how to create custom hooks in React, how to test them using React Testing Library and how to publish them as a standalone npm package.
tags: react
series: Custom Hooks ReactJS Mini Course
---

{% youtube GsoJQCNTwCg %}

Welcome to ReactJS Custom Hooks Mini Course. In this course we'll learn how to create custom hooks in React, how to test them using React Testing Library and how to publish them as a standalone npm package.

Course playlist: http://bit.ly/35FHALa
Subscribe to the channel: http://bit.ly/2QZ2UY3
Living Clojure
Tags: clojure, podcast, adventofparens, day3
Published: 2019-12-08 18:13:19

---
title: Living Clojure
published: true
date: 2019-12-03 07:00:00 UTC
tags: clojure,podcast,advent of parens,day 3
canonical_url: https://alexanderoloo.com/blog/2019/12/03/living-clojure.html
---

There was a time where I was so fed up with lisps, Clojure, stack traces, and EOF errors. I was ready to go back to Node.js. And then I came a turning point. I stumbled across [episode 29](https://www.functionalgeekery.com/episode-29-carin-meier/#t=4:43.525) of the Functional Geekery.

The episode was an interview with [@gigasquid](https://twitter.com/gigasquid). It was entertaining and I learned a thing or two. And, and, she sounded like a normal human being. One who had had to work hard. I was energized. So after Functional Geekery, I looked for more podcasts with @gigasquid. There were a fair number of them. [Living Clojure](http://shop.oreilly.com/product/0636920034292.do?sortby=publicationDate) had just come out and so everyone was keen to chat about it. It was great fun. I even ended up buying the book. Those podcasts became my companions as devoured the other episodes.

<iframe src="https://giphy.com/embed/l2QDLujtcAvAr2gRa" width="100%" height="100%" style="position:absolute" frameborder="0" allowfullscreen=""></iframe>

Eventually, my travels led me to the [Cognicast](http://blog.cognitect.com/cognicast/088). It was amazing! There were close to 100 episodes (at the time). All relating to Clojure. On days when I was too tired to code, I listened to an episode of the Cognicast. Some days I would just listen to an episode for entertainment.

Alternating between coding, reading and listening turned out to be a great way to keep forward momentum. It was like I was truly living Clojure. The switching contexts also helped me deal with the frustration of learning a new skill, in an calm, entertaining and educational way.

Give it a try and lemme know how it goes for you. I’ll be on [twitter](https://twitter.com/alekcz). And remember when you get frustrated with Clojure, remember @gigasquid’s words: “Parens are like hugs for your code”. Do you really want to write code that’s deprived of hugs? Keep fighting the good fight. Keep living Clojure.

![Parens are like hugs for your code](https://alexanderoloo.com/images/blog/parens.png "Parens are like hugs for your code")

_May your build always pass._

_Alex_

### Podcasts on Living Clojure

- [Functional Geekery](https://www.functionalgeekery.com/episode-29-carin-meier/#t=4:43.525)
- [The Cognicast](http://blog.cognitect.com/cognicast/088)
- [Hanselminutes](https://hanselminutes.com/464/living-clojure-with-carin-meier)
- [Changelog](https://changelog.com/podcast/171)

This post is part of the ["Advent of Parens"](https://alexanderoloo.com/blog/2019/12/01/advent-of-parens.html).

_I know. I know. We were supposed to chat about dealing with dodgy internet while trying to learn Clojure. It’s been one heck of a day so we’ll have to chat about that next week._
What would a JavaScript Wasm desktop be like?
Tags: javascript, webassembly, linux
Published: 2019-12-03 10:06:14

I had recently commented on a post regarding the 'best' DE (desktop environment) for Linux. Thinking about it, the best desktop environment for me would be one I could extend in a scripting language, and who better that JavaScript?

Now I know what your thinking (I don't), JavaScript is TOO SLOW, true it's not multithreaded, and it is slow compared to lower level languages but thats not a concern because WebAssembly 📯.

So let's give an example, where searching files in a file manager, we implement A* in Rust, then we represent the results of a search in the front-end. The DE would run in something like Electron or NW.js and windows themselves could be separate instances of the host platform.

Graphics and special compositing would work well with webgl.

What would you get for free using js. A powerful ui architecture, using just CSS and HTML to layout applications, a standard custom elements library could power the UI and react or other could work well. A host of network, authentication, Bluetooth and other APIs out of the box, potential to have your desktop in the cloud like chrome os, and many more!

Thoughts? Let me know if I am a crazzy person in the comments bellow.
I might quit.
Tags: quiting
Published: 2019-12-03 09:09:22

I'm very sorry I don't think that anyone cares about me on Dev So I might quit. I haven't been posting for awhile now. And I'm sorry. If you think I should stay feel free to tell me. But I just don't have much to do. I've lost ideas. Nothing's helping so far. I check Dev once in awhile but. I just. Can't keep up. Dev is a great place and I will stay for some time. But. I'm sorry but I can't stay here forever. I'm willing to give the new comers a chance. They deserve it!

All I can tell you is keep posting. Maybe someday you'll be a star.

Less than a 100 people know I exist but. 

I'll miss dev. 

If I shouldn't leave just tell me. 

It's fine.

I work very hard on Dev and. When people critize me of not doing good. I get very sad.

The people here are nice. But. The negative feedback coming from my readers is just too much for me.

I'm very sensitive. 

Researching working and writing a Dev post takes me time.

And English isn't my first language. So i get some typos here in there.

I hope you understand how I feel.


Sincerely - Ibrahim From TGD Dev ™
Day 15 - Update
Published: 2019-12-03 02:54:07

Long time , no see.

I got laid off and it kinda threw my plans off and I took some time to think about next steps. I still don't it well planned out. I am going to use most of the time to study more and go through courses and look for work.

I also have been accepted in the Bertelsmann Tech Udacity Scholarship Challenge Course for the Cloud Track and I am learning so much already.

Today was my first day unemployed and I spent a lot time learning the shell and a few lessons on Version Control. 

Some of the commands were not too new to me. But, here are some interesting ones that I learned:


**Echo**

This command is just like the <code>console.log</code> in JavaScript and will return whatever you wrote after the command.

**!!**

The double “!!” will return the last command you wrote and the result of that command. If you want to avoid this, just wrap the text in single quotes.

**Viewing Files**

You can use <code>cat</code> or <code>less</code>.

<code>cat</code>: reads the file and outputs the content. It will display everything.

<code>less</code>: it shows less of the file or gives you a 1 page view.
	You can use “space” or the arrow key to move through the file
	You can use “b” to go back
	You can also use the “/” to search the file for a specific item
	You can use “q” to quit

As usual, these are some of the things that were new or interesting to me.

The streak continues...
Software Development, Full Stack Development, Web & Mobile App Development - Altorum Leren
Tags: blockchain, fullstackdevelopment, uxui, cloudcomputing
Published: 2019-12-03 08:58:42

Altorum Leren, a leading IT, Services Company, specializes in Software Application Development, Cloud Computing, UX/UI, Full Stack Development, IoT, Artificial Intelligence, Blockchain,DevOps, Front End Web Development, Back End Web Development, Mobile App Development and more. https://www.altorumleren.com/
Configure vendor downloadable products in Purpletree opencart Multivendor
Tags: multivendorextension, opencartmultivendor, opencartmultiseller
Published: 2019-12-03 08:57:49

A downloadable product in Opencart Multivendor extension can be anything that vendor/admin can deliver as a file to customers/buyers, such as an eBook, PDF file, online Antivirus license key, video, software application, or any kind of software update. Admin/Vendor can offer an album for sale, and sell each song individually. You can also use a downloadable product to deliver an electronic version of your product catalog. It is very easy to create a downloadable product for the vendor on the Opencart store.
Creating a Downloadable Product as Vendor in Purpletree Multivendor Extension
· The first thing the vendor needs to do that login as a seller by clicking on Seller Login on the header of the website.
· Now, you moved to Seller Dashboard In the dashboard you can see the Dashboard icon please click on that icon.
· After clicking on the download button you can see the Downloads listing. Here you can see a blue color add button, to create a downloadable product.
· Please enter your downloadable name and upload the file which vendor wants to sell to customers/buyers. Then finally clicks to Save button
· You have created the downloadable file. Now, you need to assign that downloadable item to the product. To do that please go to Seller products > Add/Edit any product from the seller product list.
· In this step, you have assigned the downloadable item to the product. Please, Clicks to Data tab > Downloads > Select the downloadable item from the autocomplete dropdown then finally clicks to the continue button.
· Our downloadable product is ready to sell whenever customers checkout this product after clearing the payment then the product will automatically download. That downloadable product will visible in the seller orders listing.
Download this extension at: https://www.purpletreesoftware.com/multi-vendor-marketplace-opencart.html