teleren/devto huggingface dataset:
Traits of a Senior Software Engineer
Tags: seniority, career
Published: 2021-08-08 21:41:01

For a long time, I wanted to compile my list of qualities of a senior developer. How do you become one? What do people expect from a senior developer? This post is my first attempt.

There are many angles to approach the topic. Here are some of the sources I found interesting:

* John Allspaw's [On being a senior engineer](https://www.kitchensoap.com/2012/10/25/on-being-a-senior-engineer/)

* Camille Fournier's [Career ladder of RentTheRunway](https://dresscode.renttherunway.com/blog/ladder) and [An incomplete list of skills senior engineers need, beyond coding](https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f).

* [Soft Skills Engineering Podcast](https://softskills.audio/), where a listener once asked, "Can I call myself a senior developer after X months in the industry?", and the host answered: "I'm afraid, you didn't make enough mistakes yet".

* A recent [Twitter thread](https://twitter.com/the2pizza/status/1412734211904114690) (in Russian), where the author says that to him seniority is not about hard skills (languages, frameworks, technical stacks), but more about professionalism, responsibility, decision-making, and ability to solve business problems.

In this post, I'm writing down my answer. I wish I wrote it a couple of years ago to compare how my views have changed. I'm sure I will give a different answer in a couple of years. Here I just list the points, and I plan to elaborate on some of them later.

Important Senior developer traits (2021):

* Hunting for business knowledge - actively search how the product works, how users interact with it, why it works as it does;

* Being able to discuss without raising the voice;

* Express opinions and support them with arguments;

* Gut feeling - listening to your intuition;

* Remember stuff - writing down, documenting, keeping lists of things, organizing information inputs and outputs;

* Knowing the processes of working with people in Software Development;

* Knowing the next step and the one after that;

* Pushing a task till the end or passing it to another person;

* Changing processes when needed (supported with an opinion and arguments);

* Looking at things from the team point of view;

* Seeing people as collaborators and contributors (or at least parts of a solution), not obstacles;

* Solving the unsolvable problems;

* Experience in putting out fires;

* Experience in breaking things (build, CD, production).

Cover image by <a href="https://unsplash.com/@valeria_cerbu?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Valeria Cerbu</a> on <a href="https://unsplash.com/s/photos/goose-duckling?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
How to Convert a String into DateTime in Python?
Tags: python, programming, codenewbie
Published: 2021-08-08 21:38:24

We can convert a String into Datetime in Python in many ways. We can do so if we have a string Nicely Formatted in the Date Format, but most of the time it is not the case and we got some problems when we are doing so.
More in this article. https://www.alixaprodev.com/2021/08/how-to-convert-string-into-datetime-in-python.html.html
Why to AI/ML Projects succeed or fail or are not taken up?
Tags: machinelearning, ai, datascience, discuss
Published: 2021-08-08 21:13:57

I have been working in data analytics, data science, ML and AI for over 15 years now and have seen my fair share of ups and downs of successful and failed projects in the domain. There is no software or tech project I see out there that can do better with a bit of AI in them today. Then why don't they have it?

I want to get community's insights into why AI/ML projects succeed or fail or are not taken up at all? 
If you were part of a successful or failed project, or saw an AI/ML pitch not getting any traction, I would like to hear your point of view? 
What worked? What didn't? What could have worked?
2D Pipeline TD Responsibilities
Tags: career, harmony, animation, pipeline
Published: 2021-08-08 20:23:44

---
title: 2D Pipeline TD Responsibilities
published: true
description: Summarising the general responsibilities of a 2D Animation Pipeline TD
tags: career, harmony, animation, pipeline
series: 2D Animation Pipeline (Harmony) Technical Director
cover_image: https://images.pexels.com/photos/2310904/pexels-photo-2310904.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260
---

The primary responsibilities are:
* Set up and document team workflows
* Improve workflows through training, tools, automation
* Act as communication bridge between art/production/IT/software development teams
* Troubleshoot software & hardware issues ( with IT / vendors)
* Assist with asset deliveries and archiving

## Could you be a bit more specific with the types of tasks a 2D Pipeline TD does?
Sure, I've broken down the task types into 4 categories: 



| 1. Project work		| 2. Support 							| 3. Troubleshooting 								| 4. Administration |
| --------- 		|:---------:							| -------:									|-------:|
| **Tool Development** 	|**Team meetings** *[production, studio, technical]*			|Internal **support tickets** 							|**License Management**|
| **R&D** 			|**Technical guidance** *[onboarding, demonstrations, consulting]*  	|Liasing with **vendors** *[Toon Boom, Tracking software, other production software]* |**Documentation**|
| 			|Liaising with **IT** *[maintenance, hardware setup, benchmarking]*	| 	 									|

The quantity of work time spend on each of these will vary depending on factors such as:
* Crew size
* Age of studio
* Experience level of team
* Areas of pipeline studio delivers
* Third-party tools used 

For example; a studio's 1st Harmony series will need a lot of initial preparation, discussion with stakeholders, set-up and testing. By their 4th series, the wokflows should be established and more speciffic tools can be designed and optimised.
AWS Cognito and AWS API Gateway
Tags: aws, api, cognito
Published: 2021-08-08 20:23:11

Let's configure AWS cognito to secure our AWS API Gateway.

#### Open AWS Cognito:

![Screenshot 2021-08-08 at 20.58.47](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4619msms1p2m033505w.png)

#### Create a default User Pool

![Screenshot 2021-08-08 at 20.59.55](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5bzcqraaivswir8hhg76.png)

After the pool is created, go back into the setup and create an app client

 ![Screenshot 2021-08-08 at 21.05.32](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slguooi7xkejzu7qulhv.png)

Update the App Client Settings

![Screenshot 2021-08-08 at 21.14.24](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l8eqjm1ryxguayfmlrla.png)

Add a domain to host your auth pages

![Screenshot 2021-08-08 at 21.17.32](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tldkbtqi8j2vfhaac9et.png)

Go back into "App client settings" and "Launch Hosted UI". 

![Screenshot 2021-08-08 at 21.23.15](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blr5fhrge5rbny8dlth6.png)
 
 Now to secure your API, within your AWS API Gateway configuration, create a Cognito Authorizer 

 
 ![Screenshot 2021-08-08 at 21.31.15](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4f8sfllaft464vsarmrk.png)


Now secure an API endpoint by updating the "Method Request" of that method, *You might need to refresh your browser to update list of authorizers*.

![Screenshot 2021-08-08 at 22.15.55](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66cyxo25cw7d41zqbbcj.png)
 
 
Re-deploy the API and test the endpoint. You now get the following response

```json
{"message":"Unauthorized"}
```

Let's get a token. Go back to the Cognito HostedUI SignIn page and request a token by changing the "code" query string param to "token" because we'd like the Cognito service to return a token on successful login.

```
https://app2.auth.eu-west-1.amazoncognito.com/login?client_id=xxxxxxxxxxxx&response_type=token.....
```

on successful sign-in an id_token and access_token will be returned in the url. Retrieve the access_token.

To now access the secure endpoint, we now need provide an access token in the "Authorization" header

```
GET https://xxxxxxxx.execute-api.af-south-1.amazonaws.com/dev
Authorization: vLnNpZ25pbi51c2Vy...

```
We now get the response:
```json
{"message":"Welcome to My Secure API"}
```

Done!
Quick Notes Based On "Control Flow" Section of Frontend Masters' "Complete Intro to Web Development, v2"
Tags: javascript, fundamentals, ifstatements, frontendmasters
Published: 2021-08-08 20:14:52

What I did (in code):

&nbsp;&nbsp;&nbsp; `const tempToday = 86`

&nbsp;&nbsp;&nbsp; `if (tempToday < 55) {`
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `console.log('Make it warmer, please!')`
&nbsp;&nbsp;&nbsp; `} else if (tempToday <= 100) {`
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `console.log('Yes, this is in my happy temperature range!')`
&nbsp;&nbsp;&nbsp; `} else {`
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `console.log('I like it hot, but this may actually be TOO hot!')`
&nbsp;&nbsp;&nbsp; `}`

&nbsp;&nbsp;&nbsp; Logs: `Yes, this is in my happy temperature range!`

What I did (in English):
- If the value stored in `tempToday` is less than `55`, then log `'Make it warmer, please!'`
- Otherwise, if the value stored in `tempToday` is less than or equal to `100`, then log `'Yes, this is in my happy temperature range!'`
- Otherwise (i.e., if the value stored in `tempToday` is greater than `100`), then log `'I like it hot, but this may actually be TOO hot!'`
- Note that the reason, as far as I understand it, that there's not a conflict/confusion in the program between the first condition and the second condition is because the first condition is evaluated first, and only if the first condition doesn't apply (i.e., doesn't evaluate to `true`) will the second condition be evaluated.

What I practiced:
- Same as above.

What I learned:
- From the above code, I didn't learn anything new.
- From other parts of this section of instruction, I learned that there's a VS Code extension called "Prettier" that inserts semicolons right where they should be. I suppose this is useful if you have gotten in the habit of leaving them out (as is the case with me, as you can see) but you work in an environment in which they're preferred.

What I still might not understand:
- Nothing for this section.
sudoku solver - Some additions
Tags: beginners, python, sudoku
Published: 2021-08-08 19:58:12

[Code is here](https://github.com/qxcross/sudoku-solver)

## August Additions

So, now that the sudoku algo is in place, it would be nice to make it usable. I want to add a couple of things:

- Making it pretty - give the display of the puzzles some love
- System for inputting sudokus you find online/in RL.
- Ability to store puzzles (and solutions)
- Ability to have a little demo mode
- Diplay how long it took to find the solution.
- and a menu system to tie it all together.

### Making it pretty

First thing I touched - just a small function Sudoku.display_board() to print out the information in a visually pleasing manner based on an example I found through Google Image search. 

```
def display_board(puzzle):
        print('\n')
        print('+-------+-------+-------+')
        for y in range(0, len(puzzle)):
            print(f'| {puzzle[y][0]} {puzzle[y][1]} {puzzle[y][2]} ' +
                    f'| {puzzle[y][3]} {puzzle[y][4]} {puzzle[y][5]} ' +
                    f'| {puzzle[y][6]} {puzzle[y][7]} {puzzle[y][8]} |')
            if y in [2, 5, 8]:
                print('+-------+-------+-------+')
```

The way the func is designed allows for partial boards to be printed - this was kind of accidental but helps with the feedback of information when inputting the board - see below.

### Puzzle Input

So in an ideal world, I would just want to be able to take a picture of a sudoku, or screenshot, and have that be solved. But that is a little beyond me for now.

Instead, I used an input function that asks you to type in the puzzle row by row, with 0 representing missing values. It is not the most graceful solution perhaps, but it does allow me to quite easily feed in the input into the solution function.

```
def input_puzzle():
        puzzle = []
        input_msg = 'Input the known values.\nIf value is blank, input 0.\nEg. 530070000\n'
        while len(puzzle) < 9:
            valid = False
            while not valid:
                new_row = input(input_msg)
                puzzle.append(Sudoku.convert_row(new_row))
                valid = Sudoku.validate_row(new_row, puzzle)
                if not valid:
                    puzzle.pop()
                    print('Try Again\n\n')
        return puzzle
```

Convert_row turns the input into a list.

The one thing I regret is having to validate each row after it is typed. It is very annoying because most of the time I got the row right, and repeatedly validating got tedious. Then again, when a mistake is made, it mean not only having to start the puzzle again, but also having to complete input of any further rows. Which would be really shit. So its a judgement call between a small amount of constant annoyance or rare catastrophes. Hmmm.

You can't even press Enter several times... that will just register the row as incomplete. Perhaps it should recognise that if you're just tapping Enter, you've given up on the process. 

[Rest later...]
How to Clear Cache in Google Chrome [Step by Step]
Tags: webdev, webassembly, webrtc, javascript
Published: 2021-08-08 19:50:30

In this video, I’m gonna show you how you can clear the cache memory from your chrome browser application. This is the exact step by step way to [clear cache in chrome](https://www.gadgetsgadder.com/2021/07/clear-cache-chrome.html) on Windows, Mac & Linux.

I think it’s somewhat important to clear the cache memory overtime to ignore frequent lags and high usage of RAM while using chrome browser on your personal computer.

Although, cleaning the cache memory can occur a little bit of extra internet usage when you’re going to load any website next time, but it will surely increase the smoothness and performance of your overall browsing experience.

Keeping that note in mind, let’s clean the cache memory.

When it’s done, restart your chrome browser & enjoy! And I appreciate it if you [subscribe](https://www.youtube.com/channel/UCUtWlpJoFin58UEejqEtNLg?sub_confirmation=1) to the channel for more videos.

Thank you for watching, bye.
Creating a Single Page React Application with a Rails Back-End
Tags: tutorial, codenewbie, react, rails
Published: 2021-08-08 19:49:52

Start by making a directory with a descriptive name for your application or website.

![terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpl277ne9j17dscamemw.png)

Type the following in your terminal to initialize your backend if you are using rails as an api. The ‘-T’ means no testing and the ‘—api’ changes it from a full rails application to an api.

![terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7e37qzbgec1ln57q5sd.png)

Change directory into your backend.  Do a git add and commit and open your editor.  Open your gemfile and add cors and your serializer.

![terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wotjbpgqs5t4pm9mh3wp.png)

![gemfile](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxikxvvow4chklesheej.png)

Go to config/initializers/cors.rb and uncomment lines 8 – 16.  Change origins type to ‘*’.  In your terminal do a git add and commit.

![cors file](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7061t1kecogacpol9hrw.png)

Change directory up one to your application directory.  Type the following into your terminal to initialize your frontend.

![terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/erwa9ncz3srl9b8s3m1d.png)

![terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2cnem7y1vevvkinsg72.png)

The last thing you need to do is make two remote git repositories for your frontend and backend.  Go to your git repository page and click ‘new’. 

![new repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cg5lb0czmagvstaob8dq.png)

You don’t want to use a template.  The name should be the same as the name of your frontend. If it is open source, make it public.  Click ‘Create Repository’.

![new repo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xsv162ogtumnrb3jbibd.png)

This is a directory with a git repository already created, so you want to use that option.  Copy that code and go to your terminal.  Paste it on the command line in your terminal and hit enter.  

Repeat the previous two steps for your backend.

You are now ready to create a single page react app or website.
Get your public IP address from command line
Tags: linux
Published: 2021-08-08 19:49:34

If you want to know your outgoing public IP address, you could go to google and search "what's my ip", google will show your IP address.

If you don't want to use google, you could just use the command line. Two ways listed below (tested in Linux and MacOS):

1st way:
```bash
$ dig +short myip.opendns.com @resolver1.opendns.com
```

2nd way:
```bash
$ curl ifconfig.co/
```

For faster access, you could just put an alias in your shell config, e.g. `~/.bashrc` or `~/.zshrc`:

```bash
alias myip='curl ifconfig.co/'
```

Next time you can just open your terminal then run:
```bash
$ myip
$ 67.83.127.63
```
Best Ideas for First Job as Software Engineer
Tags: devops
Published: 2021-08-08 19:33:37

Getting your first software engineering job can be somehow tricky. If you don’t have good skills with, muliple tools then it becomes worse. But learning with strategy can be helpful. Have a future mind, think about what you want to major in, then perfect in your area of specialization. Just make sure you have a linked profile, GitHub account, and a good resume. Here are some tips for you.Let's Go!

1. Be Ready & Organized
.First and foremost, apply for any vacancy you meet, even if you are not good at it.There are various steps to take when you have applied for a job or internship. Always be ready for an interview, however hard it will be. Some interviews might take various turns before being hired.  Keep track of the next steps like making follow-ups, tips online, or anything you have ever read about the interviews. Get to know more about the company and working conditions. Google calendar is useful to remind you about an interview.

2. Get a referral
Referrals are good. Most top companies will prefer taking a referred candidate over other candidates. It's okay not to have a network, but throw the shame away and approach anyone from local area, or schoolmate who graduated before you. Make friends who have great connections. Attend meetups and connect with engineers at that company. Thank them after the meeting and let  them know how much you yearn to work at their company. Meeting people in person is perfect. You can join groups on Facebook where you will meet large communities of coders.

3. Message Recruiters / Agencies
On linkedIn, you can notice the job of a person and the company he/she is working with. Design engaging messaging for most of them. It’s a powerful social media site if you have no connection. Visit top companies and look at recruiters. Look for any connection. Try as much as possible. You can pick their emails and send grammatical text.

4. Apprenticeship programs
If you don’t have a degree in CS or industry experience, then this is the best place to be. The apprenticeship might offer certificates. At a times they offer a full scholarship learning free courses to sharpen your skills. Make friends with the company holding the programs. Sometimes they offer internships and their projects might be appealing on your resume.

5. Target Smaller Companies
Most software engineers will look for large tech companies. But when it comes to small companies, their vacancies have fewer applicants. If you are very ambitious, remember you are new to the job, a small company might offer you perfect skills. The interview in these minor companies is much easier compared to big tech companies like Google. If you get the job, sharpen your skills, increase your technology tools and get ready for big interviews.

Software engineering jobs are abundant. The world of technology is still growing wide. Work on personal projects and make your GitHub green. The certifications are sometimes worthwhile. Let your resume talk about what you can do.
Handlebars yet another thing to learn... and mostly unlearn
Tags: javascript, bootcamp
Published: 2021-08-08 19:18:04

What are these things? HTML snippet managers? Templates? Yes.

But what they are right now for me are training wheels for something else. A stepping stone.

Just one more thing to get me to where I'm going and I'll be honest for me it's a little silly. 

Patience is a virtue but right now what I want is a vice. #bootcamplyfe
Day 166
Tags: 100daysofcode, programming
Published: 2021-08-08 19:17:40

Day 166/200 of  #100DaysOfCode 

- Solved three problems on Codewars.

1 - Extract Nested Object Reference (6 kyu)
2 - Testing 1-2-3 (7 kyu)
3 - What a "Classy" Song (7 kyu)
How to add Environment variables in a React Native project with TS
Tags: reactnative, expo, react, typescript
Published: 2021-08-08 18:49:11

There are a lot of ways in which we can use environment variables in React Native, you can look at many of them listed in [this stack-overflow question](https://stackoverflow.com/questions/33117227/setting-environment-variable-in-react-native)

The purpose of this blogpost is to point out and explain the simplest and quickest way to make use of environment variables in your RN project with typescript type checking, you can still follow this blog if you are just using javascript. 

We will be making use of the handy npm library [react-native-dotenv](https://www.npmjs.com/package/react-native-dotenv)

## STEP 1: Install following packages:

```bash
npm install react-native-dotenv
```
or
```bash
yarn add react-native-dotenv
```

For typescript install additionally:
```bash
npm install -D @types/react-native-dotenv
```
or 
```bash
yarn add -D @types/react-native-dotenv
```

## STEP 2: update your babel.config.js

This blogpost uses an expo managed project, hence the  `babel.config.js` will look like

```js
module.exports = function (api) {
	api.cache(true);
	return {
		presets: ["babel-preset-expo"],
		plugins: [
			[
				"module:react-native-dotenv",
				{
					moduleName: "@env",
					path: ".env",
				},
			],
		],
	};
};
```

here, moduleName is the alias we can give to `react-native-dotenv` library so we can import like:

```js
import { ENV_VAR } from "@env" 
```

instead of:
```js
import { ENV_VAR } from "react-native-dotenv" 
```

this just makes importing a bit easier :)

## STEP 3: Create a `.env` file in the root directory and add your environment variable

```
ENV_VAR=some-secret-value
```

## STEP 4: Use the environment variable by importing it
```js
import { ENV_VAR } from "@env" 
```


## STEP 5: Add typescript support
![Screenshot 2021-08-09 at 12.01.36 AM](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/91ibvkhec7xp80ivluin.png)
If you are using Typescript in your project, so you must have observed that typescript is yelling at you in STEP 4.
To fix this, we will create an `env.d.ts` file in the root directory with the following content:

```ts
declare module '@env' {
    export const ENV_VAR: string;
}
```

_Wait a second! we are almost done, phew 😅_

After this, you also need to update your `tsconfig.json` file with: 

```json
{
	"extends": "expo/tsconfig.base",
	"compilerOptions": {
		"strict": true
	},
	"typeRoots": ["./types"] // <------ you need to add this
}

```

And now we are done!

---

Thank-you for reading this blog! The goal for me writing these specific use-case blogs is to create a directory which I can look back on in future for reference and also help the developer community while at it.
Please consider following me here or on [Twitter](https://twitter.com/vikrantbhat1022) to get updates for my latest publications :)