teleren/devto huggingface dataset:
Good to Great Designs - Q&A on Software Design
Tags: design, architecture
Published: 2021-04-01 01:21:43

## Architecture?
- Big Picture, What, Where of the software development process
- Architecture Patterns(Microkernel, Microservices, Layered, Event-based, Space-based)
- Trade-offs(Quality, Cost, Portability, Time to market, Longevity, Technical debt, etc.)
- Technology, Storage, Security, Disaster Recovery

## Design?
- How of the software development process 
- Design Patterns
- Classes, interfaces, functions

## What is a good design?
- Solves a problem
- Easy to understand 
- Follows a common design pattern
- Doesn't reinvent the wheel
- Supported by everyone
- Cost of changing the design is affordable

## How to create high-quality designs?
- Applying software design principles is the key to creating high-quality designs
- Flow Charts & User stories with good acceptance criteria
- Manage essential complexity
- Eliminate accidental complexity
- Document the rationales of the design decisions
- Lots of small conversations with a lot of different people to get alignment

## How to evaluate a design quality?
- Adherence to Coarse-grained principles like abstraction, encapsulation, modularization, hierarchy, cohesion and coupling
- Subjecting the design to change and then evaluate the cost
- Adherence to Project-specific constraints such as language constraints, platform constraints, framework and library constraints, domain constraints, architectural constraints, hardware constraints, and process constraints

## Who is a good designer?
- Good designer is a great communicator
- Approach
  - What problem does this solve?
  - Select a style that matches the needs of the problem
  - How does this affect the user?
  - Why this is better than the alternative?
  - Designer shouldn't reinvent the wheel
- Understanding
  - See their perspective
  - Remove distractions
  - Anticipate reactions
  - Clarify your assumption
- Listening
  - Let go off the ego
  - Let them talk
  - Hear what they're not saying
  - Uncover the real problem
  - Convert "Likes" into "Works"
  - Ask for examples
- Responding
 - Give up control
 - Lead with a Yes!

## What are the tactics designer should use?
- Appeal to a nobler motive during negotiations 
- Show a comparison
- Propose an alternative 
- Give them a choice
- Speak the language of your audience
- Focus on acceptance criteria avoid gold plating
- Postpone the decision, we are smarter tomorrow than today
What things to consider while adding new Software to your toolkit
Tags: productivity, beginners
Published: 2021-04-02 05:05:23


Here are few things that I like to consider while adding the new tool/software to my toolkit.

## 1. Easy to Use
It should be your number one priority. 
> If it is not easy to use, It will never get used. 

So DO NOT look for Software that has too many features, You are most likely to stop using it after some time. We humans don't like complex stuff.

## 2. Simplicity
More steps it requires to do a job, More difficult it is, and more likely you going to hate it. So look for Softwares that requires minimum effort.

## 3. It Offers you just enough features, for your Requirements

Do not fall for Feature-Rich Software, You are going to stop using it, More options we are given, the more confused we get. 

> Good Software allows you to disable the extra features that are not useful for you. One of the good examples of that Software is Clickup, They allow you to disable the feature that you don't need. 


What are your thoughts on it? Let me know in the comments section
✔||🤢 Commit or Vomit | Easter eggs
Tags: programming, discuss, watercooler, webdev
Published: 2021-04-02 17:40:09

Wasn't planning on posting the second ✔||🤢 this fast but couldn't wait any longer with this one! And no, it's not about eating to much easter eggs but easter eggs in your code. 😅

#easter eggs  ✔||🤢

Would you place easter eggs in your code?

❤: Commit (something I could commit)
🏷: Vomit (I'd never commit this)
🦄: I like your post please continue this series!


Let's vote! 😊

P.s. leave your best easter egg idea for fun!
How can I access a Non-static method In a library 
Tags: android, java, sdk
Published: 2021-04-02 20:11:47

Hi, I'm new to android. Now I have used a library to implement ripple effect into my application.
This is the scenario.
1) I'm using the button image and its background ripple effect through an API from the server-side, and I'm keeping the response at the time of application login, into **SharedPreferences**.
2) I'm using the **BroadcastReceiver** to implement the button effect.
3) The button is represented as an image and its background ripple effect.
(The library I used for this implementation is [https://github.com/skyfishjy/android-ripple-background][1])
4) The library provides the ripple color in the form of **TypedArray**
(hear is the code section of the implementation)

            final TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RippleBackground);
        rippleColor=typedArray.getColor(R.styleable.RippleBackground_rb_color, getResources().getColor(R.color.rippleColor));
        rippleStrokeWidth=typedArray.getDimension(R.styleable.RippleBackground_rb_strokeWidth, getResources().getDimension(R.dimen.rippleStrokeWidth));
        rippleRadius=typedArray.getDimension(R.styleable.RippleBackground_rb_radius,getResources().getDimension(R.dimen.rippleRadius));
        rippleDurationTime=typedArray.getInt(R.styleable.RippleBackground_rb_duration,DEFAULT_DURATION_TIME);
        rippleAmount=typedArray.getInt(R.styleable.RippleBackground_rb_rippleAmount,DEFAULT_RIPPLE_COUNT);
        rippleScale=typedArray.getFloat(R.styleable.RippleBackground_rb_scale,DEFAULT_SCALE);
        rippleType=typedArray.getInt(R.styleable.RippleBackground_rb_type,DEFAULT_FILL_TYPE);
        typedArray.recycle();

  [1]: https://github.com/skyfishjy/android-ripple-background

in this code **rippleColor=typedArray.getColor(R.styleable.RippleBackground_rb_color, getResources().getColor(R.color.rippleColor));**
That is my problem part.

Already I mention that I'm using the **SharedPreferences** to keep the response.
how can I parse the response through the library and get the ripple color which I provide through my response?

hear is my code

     rippleColor=typedArray.getColor(R.styleable.RippleBackground_rb_color,Color.parseColor(BroadcastReceiverClass.getRadarColor()));

my **BroadcastReceiverClass** is not a static class (Because it receives the auth response through the Intent).

Now I'm trying to access **Non-static method 'getRadarColor()' cannot be referenced from a static context**. How can I fix this problem?
I can't create an instance of the class at that library (Because it BroadcastReceiverClass ** extends FrameLayout**) and the contractor has different parameters Like **Context context, AttributeSet attrs, int defStyle**

If anyone knows about this problem please share your suggestions.
Moreover, I think it's not a big thing but unfortunately, it consumes me more than a day.
Do you know nginx, lets talk about?
Tags: nginx, devs, dotnet, server
Published: 2021-04-03 13:03:13

Follow me on [Twitter](https://twitter.com/thecodinglive)

#What is nginx
[Nginx](https://www.nginx.com/), pronounced like “engine-ex”, is an open-source web server that, since its initial success as a web server, is now also used as a reverse proxy, HTTP cache, and load balancer.

#How Does Nginx Work
Nginx is built to offer low memory usage and high concurrency. Rather than creating new processes for each web request, Nginx uses an asynchronous, event-driven approach where requests are handled in a single thread.

With Nginx, one master process can control multiple worker processes. The master maintains the worker processes, while the workers do the actual processing. Because Nginx is asynchronous, each request can be executed by the worker concurrently without blocking other requests.

##Installing Node on Ubuntu
Executing the following bash commands will setup NodeJS and npm on your Ubuntu machine:
```
sudo apt-get update 
sudo apt-get install nodejs 
sudo apt-get install nodejs-legacy 
sudo apt-get install npm
```
##Installing NGINX on Ubuntu
```
sudo apt-get update 
sudo apt-get install nginx
```
##Serving Static Contents
Let’s start simple and first, we will use NGINX to serve a static website in our first demo.

##Configuring NGINX
Configuration files can be found on /etc/nginx/. NGINX comes with a default site config file and we can open it using nano:
```
sudo nano /etc/nginx/sites-available/default
```
We will not change anything in this file yet but if we do, we have to restart the NGINX server afterward to make these changes take effect.
```
sudo service nginx restart
```
In this post, we saw how to serve static web applications using NGINX. Follow me on [Twitter](https://twitter.com/thecodinglive)
Learning Github Actions
Tags: github
Published: 2021-04-03 22:53:31

#A little bit about me:

My name is Matt Dillon and I'm a Software Engineer specializing in Full Stack Development. My background is 15 years in Casino Management where I managed 75 employees, thousands of customers, and millions of dollars daily. Now I’m looking to take those skills of working in a fast-paced environment and apply them to opportunities in software development. I found out about Github Actions while attending a JDHH meetup with Brian Douglas as a guest speaker. Brian (a.k.a bdougie) works at Github as a Developer Advocate. This blog is for him.

#Github Actions
I started my research at [link](https://docs.github.com/en/actions) and followed the directions in quickstart. The first thing you will need to do is set up your first workflow, follow the instructions in the link. I was going to described what this and using Github Actions/workflows could do, but this says it perfectly already [link](https://docs.github.com/en/actions/quickstart#next-steps).

#Wrap-UP
Happy to have met bdougie and found his projects. See you on Open Sauced!
What's new in Python 3.10
Tags: python
Published: 2021-04-04 02:49:22

Python 3.10 will be here later this year and I wanted to go over some of the new features that will make our lives a little easier.

## Multi line context managers.

This allows you to have multiple context managers in one `with` statement. Instead of nesting context managers and the associated complexity, you can open everything at once in one expression. One use case would be having multiple files open. Now all the needed files can be opened and closed in the same context without nesting.

```python
with (open('source_a.txt') as source_a,
      open('source_b.txt') as source_b,
      open('out.txt', 'w') as out):
    <perform some logic to use the contents of all the files>
```

## Error messages point to the fault and not to where the interpreter failed

Error messages have been improved so that if you are missing a bracket, the error handler will highlight the portion of code it thinks is missing the bracket instead of the first assignment that failed due to a missing bracket.

Previous implementations would report where the interpreter quit working, which was after the part of code that was missing the bracket. This should make troubleshooting code much easier.

## Structural pattern matching, a.k.a. switch statements 

Python is getting a feature that seems like a switch statement and can be used that way, but is actually more flexible that simple equality checks.

From the python docs *"Patterns consist of sequences, mappings, primitive data types as well as class instances."* This means that you can match on a broad array of criteria and can compare class instances against one another based on how the instances were created. You can also use array methods, like `map` and match on the output from that.

This will be a massive improvement over using imperative `if` clauses. This more declarative approach is easier to read and can be implemented in complex cases easier.


## array

The `index()` method of the builtin array is getting start and stop parameters. This will make it work more like Javascript.
Start learning a new language or go deeper with Java
Tags: java, programming, career, discuss
Published: 2021-04-04 16:17:21

---
title: Start learning a new language or go deeper with Java
published: true
description: 
tags: #java, #programming, #career, #discuss
//cover_image: https://direct_url_to_image.jpg
---

I have been a Java developer for more than 10 years and the last 4 years I have been focused on micro services architecture with Spring boot, hibernate and Oracle for a consultancy company where we have to deal with the full release process until we put the code in production, every month approximately.

Last month I applied to a selection process for a company who has an on-line application (not a consultancy) and they were looking for Senior developers in Java. After some interviews with the recruiter and a team lead I started the second phase, which was a code challenge. I spent the weekend implementing the solutions, trying to cover the acceptance criteria, building tests and trying to apply all my advanced knowledge about java 8 and Spring Framework.

I am not entirely satisfied with the final solution but I think I did a good job. I passed to the next phase which was a live coding with some members of the company. We reviewed the code and they were asking me questions about the followed approach and about java. Besides my nerves (blocking my mind) I realised that I am not able to answer basic questions about Java, things like: "how does the garbage collector work"; "differences between ArrayList and LinkedList"; "Why is it required to implement Equals() and HashCode()", etc. They had also proposed to use java inheritance to create a baseDTO and despite being able to surf The Internet I was too nervous that I failed, and therefore I was out of the process.

Now I have some doubts about what to do with my future. Some days I think that I should become a Java certified and review all the java stuff while I am preparing for the exam. But other days I think it is better to have some rest of Java and try something new, like Ruby/Rails or Golang, which will allow me to have different perspective about the ways of implementing a solution.
VSCode Plugins
Tags: vscode, plugins
Published: 2021-08-04 20:20:34

---
title: VSCode Plugins
published: true
date: 
tags: vscode,plugins
canonical_url: https://cgweb.co.uk/blog/vscode-plugins
---

Like many developers, [VSCode](https://code.visualstudio.com/) is my text editor of choice I thought I would share some of my favourite and most useful plugins: 
- [bracket pair colorizer 2](https://marketplace.visualstudio.com/items?itemName=CoenraadS.bracket-pair-colorizer-2) - as the name suggests shows matching brackets in colours 
- [Color Highlight](https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight) - highlights colours in your code 
- [HTMLHint](https://marketplace.visualstudio.com/items?itemName=mkaufman.HTMLHint) - highlights any stray or missing tags I've found this super useful for work when building emails 
- [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) - quickly enable a local server 
- [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) - I write in markdown a lot this helps to keep everything consistent and points out common errors e.g. going from # (h1) to ### (h3) 
- [Markdown Preview Enhanced](https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced) - this pairs well with linter enabling you to see as you are writing in vscode 
- [Material Icon Theme](https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme) - adds material design icons to vscode 
- [Settings Sync](https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync) - sync your settings between different devices 
- [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur) - vue tooling for vscode 
- [Tailwind CSS Intellisense](https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss) - I've used tailwindcss in a few projects and have found this super useful 
- [JavaScript (ES6) code snippets](https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets) - a series of ES6 snippets which I should use more

If anyone has any further suggestions for must-have plugins I'll be interested to here about them
Follow me on my journey as I complete 100 UI/UX design challenges in 100 days!
Tags: ux, design, webdev
Published: 2021-04-07 00:01:45

Today I started the very first day of Daily UI's 100 day UI & UX design challenge! Every day, except on weekends, for the next 100 days I'll be completing each daily project. Depending on the complexity of each project I will likely try and do multiple different takes on each days challenge. Follow me on DEV, Medium, Bēhance, Dribbble, and check out my personal website for updates as I achieve each day's challenges!
How to query AWS load balancer log if there are terabytes of logs?
Published: 2021-04-07 10:32:43

I want to query AWS load balancer log to automatically and on schedule send report for me.

I am using Amazon Athena and AWS Lambda to trigger Athena. I created data table based on guide here:

https://docs.aws.amazon.com/athena/latest/ug/application-load-balancer-logs.html

However, I encounter following issues:


1) Logs bucket increases in size day by day. And I notice if Athena query need more than 5 minutes to return result, sometimes, it produce "unknown error"

2) Because the maximum timeout for AWS Lambda function is 15 minutes only. Therefore, I can not continue to increase Lambda function timeout to wait for Athena to return result (if in the case that Athena needs >15 minutes to return result, for example)

Can you guys suggest for me some better solution to solve my problem? I am thinking of using ELK stack but I have no experience in working with ELK, can you show me the advantages and disadvantages of ELK compared to the combo: AWS Lambda + AWS Athena? Thank you!
【VidAvatar】AI Face Animation App Insider Program 
Tags: vidavatarinsiderprogram
Published: 2021-04-07 11:40:36

This week we’ve launched VidAvatar, an AI face animation App that supports multiple faces to animate on the same photo. We would love to hear what you guys think. Therefore, we are initiating the VidAvatar Insider Program. 

What you can do with VidAvatar:
●Make fun of your classmates, colleagues, family members, or friends by using a group photo 
●Sing the same song with your beloved ones or pets 
●Make the famous Mona Lisa smile
●Enliven old photos to bring back precious memories 
●Defy reality with advanced AI technology

Main features:
●Multi-face animation supported
●Upload a photo, select faces, and done
●New promos updated daily 
●Video generation is fast, in just a few seconds
●Animation is natural and real

What you need to do: 
Try the app, and provide feedback or reviews, or any insights for us. 

Benefits to becoming a “VidAvatar Insider”:
1.7-day free access to the App, including the amazing multi-face animation feature. 
2.Get an early peek of new features.
3.Be a consultant of the App, involving in the process of features and content development. 

How to enter: 
Add Facebook：Vidavatar Ai
Open cohort base learning App for online learners
Tags: showdev, tutorial, webdev, codenewbie
Published: 2021-04-07 13:01:24

I learned to program from online courses, but I always feel that I could become a developer earlier than this. Because many times I postponed or skip the course until it's absolutely necessary for me to learn it. I tried to be disciplined, set a learning routine, use productivity apps, and whatnot. I tried to find some app to help me with this, I try finding the reasons and came across an [article](https://www.edsurge.com/news/2019-06-06-moving-from-5-to-85-completion-rates-for-online-courses), which described that the average compilation rate of online courses is only 15%. 

So I tried to come up with an idea to solve this and created an app called [PeerUp](https://play.google.com/store/apps/details?id=online.peerup.peerup). In this App, learners will able to create a small group of peers, set learning commitment, and track the learning progress, so whenever somebody in the group makes progress it will notify everyone in the group, I hope this way peers will able to motivate each other and eventually they will able to complete the course.

If you like to try it, please [download](https://play.google.com/store/apps/details?id=online.peerup.peerup) the App or check the website https://peerup.online, the waiting list is open now.

I really appreciate it, if you can give me your feedback and suggestions. 

Thank You
Hemanshu
Day 340 : A Little More
Tags: hiphop, code, coding, lifelongdev
Published: 2021-04-07 21:51:03

_liner notes_:
- Professional : A pretty productive day if I say so myself. Had a few meetings. Did a quick demo, couldn't really finish because my laptop was not having it today. haha Worked on finishing up a demo project I've been working on with Web Components. Went to add some more information to the projects read me and found out that I had already added it before my vacation. haha

- Personal : Yesterday, did some light coding on my side project. There was a race condition happening and I worked on fixing it. Spent most of the time trying to remember where I left off. haha Got that done and basically went to bed.

![A view of the lush landscape of fields and trees in Doi Chiang Dao, Thailand with mountains in the distance](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5hnhuhans0npd6ddkfk0.jpg)

Going to do more work on my side project. I want to get the video uploading worked out. And then work on uploading other assets. I think once I get one down, the rest should follow along similarly. Going through the data structure I have set up now, I may change it around a little more. I'll see. It may help with displaying the info later. Depending on how late it gets, I may watch an anime. I mean, I'm paying for it now. haha

Have a great night!

peace piece
Dwane / conshus
https://dwane.io / https://HIPHOPandCODE.com
{% youtube Gg7Y-okiYn0 %}