teleren/devto huggingface dataset:
5 takeaways from Google technical wrtiting events
Tags: tech, writing, google
Published: 2023-02-14 05:10:07

## Background

In 2022 and at the beginning of 2023 I was attending Google technical writing events in order to improve writing. The goal of this article is to share some takeways.

## Event types

- Technical Writing One: General writing
- Technical Writing Two: Drafting, visualization
- Accessibility: Accessible writing & visualization
- Train the trainer: How to teach

## Facilitate

As Barry Rosenberg pointed out in Train the trainer - the goal is to focus on facilitating discussion, not lecturing. Be the enabler of the conversation!

Growing up in Poland where the (teaching) culture has been very top-bottom - I found it worth re-iterating, especially to those whose culture also operates like this.

## Focus on improvement

In one of his classes Barry Rosenberg said that the goal isn't to learn-it-all during those technical writing classes, but to focus on improvement. Join the class, focus on getting better - don't worry about perfecting! 

## Focus on the audience

- General writing: Styling and the type of content matching the audience i.e. for business people, beginners, senior engineers
- Accessibility: How a person with disability can perceive the content? i.e. running the content through a screen reader that the community uses

## Lists vs paragraphs

The trade-off between easy to skip lists vs paragraphs is interesting one, including everything in-between - mixing lists with paragraphs. Worth experimenting with!

## Growing career

- Barry Rosenberg recommended having 3 pieces of writing as your portfolio
- Kevin McGrail recommended going with Mozilla or Apache docs

## How to attend the writing events

How to join those technical writing events? 
[Go to the Google technical writing annoncements page](https://developers.google.com/tech-writing/announcements#schedule)

## Credits

Thanks to those who were organizing the technical writing events I was attending!

- Barry Rosenberg: Technical Writing One, Technical Writing Two, Train the trainer
- Charlene Kuye, Kevin McGrail: Technical Writing One/Technical Writing Two
- Tina Ornduff: Accessibility
Expandable Cards
Tags: codepen, cards, animation, webdev
Published: 2023-02-14 05:05:29

A flex card animation which reveal more information or content within. This uses flexbox in combination with grid layout and is triggered by hovering over the card. By default the layout is flexbox but in smaller screen size it uses grid layout

{% codepen https://codepen.io/ratul16/pen/XWBBrxN %}
The Role of Code Reviews in Software Development
Published: 2023-02-14 05:00:00


Code reviews are a crucial part of the software development process. They involve a team of developers reviewing and discussing the code changes made by an individual developer before they are integrated into the main codebase. In this post, we'll take a look at the role of code reviews in software development and how to conduct them effectively.

Why are code reviews important?

They help improve the quality of the code: Code reviews allow developers to identify and fix errors, improve readability, and ensure that code follows best practices.

They help identify security vulnerabilities: Code reviews can help identify and fix potential security vulnerabilities in the code.

They help improve team communication and collaboration: Code reviews provide an opportunity for developers to share knowledge and ideas, and learn from each other.

How to conduct effective code reviews:
Define the scope and goals of the review: It's important to know what you're looking for in a code review. Are you focused on code style, performance, security, or something else?

Involve the right people: Code reviews should involve a diverse group of developers with different perspectives and expertise.
Use automated tools: Automated tools can help identify common issues and save time during code reviews.

Focus on the code, not the person: Code reviews should be focused on improving the code, not criticizing the person who wrote it.
Conclusion

Code reviews are a crucial part of the software development process. They involve a team of developers reviewing and discussing the code changes made by an individual developer before they are integrated into the main codebase. By conducting effective code reviews, teams can improve the quality of their code, identify and fix potential security vulnerabilities, and improve team communication and collaboration.
The difference between Multithreading and Multiprocessing in Python and when to use them
Tags: multithreading, multiprocessing, python, developer
Published: 2023-02-14 04:50:35

As a high-level language, Python has a Global Interpreter Lock (GIL) that ensures that only one thread executes Python bytecode at once. This means that, by default, multithreading in Python is not a good choice for CPU-bound tasks, as the GIL limits the performance benefits of multithreading. However, multithreading can still be useful for I/O-bound and concurrent tasks, as it allows multiple threads to run in parallel and perform different tasks simultaneously.

In addition to multithreading, Python provides a **multiprocessing** module that allows you to run multiple processes in parallel, each with its own memory space and CPU resources. This is a great solution for CPU-bound tasks, as it allows you to take advantage of multiple CPU cores and improve the performance of your code.

In this blog post, we'll explore the differences between **multithreading** and **multiprocessing**, and when it is appropriate to use each in Python.

The main difference between **multiprocessing** and **multithreading** in Python is the way they allow you to run multiple tasks simultaneously.

**_[Multithreading](https://dev.to/noyonict/introduction-to-multithreading-in-python-18oh)_** is a way to run multiple threads within a single process. Each thread has its own stack and local variables, but they share the same memory space and global variables with the main thread and other threads. Multithreading is useful for I/O-bound tasks, such as waiting for data from a network or a database, as it allows multiple threads to perform different I/O operations simultaneously and make better use of available CPU resources. However, the Global Interpreter Lock (GIL) in Python limits the performance benefits of multithreading for _CPU-bound tasks_.

**_[Multiprocessing](https://dev.to/noyonict/introduction-to-pythons-multiprocessing-module-40gp)_**, on the other hand, allows you to run multiple processes in parallel, each with its own memory space and CPU resources. This is a great solution for CPU-bound tasks, as it allows you to take advantage of multiple CPU cores and improve the performance of your code. Each process is isolated from the others, so there is no need to worry about _thread-safety issues or the GIL_.

In summary, **multithreading** is best suited for I/O-bound tasks, while **multiprocessing** is best suited for CPU-bound tasks. The choice between the two depends on the specific requirements of your application and the type of tasks you want to run simultaneously.
Slack: The Game-Changer in Team Communication! 💬
Tags: slack, communication, gamedev
Published: 2023-02-14 04:37:36

From its origins as a solution for game developers to its current status as the primary form of workplace communication for many organizations, Slack's story is one of serendipity and innovation.


![slack](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3966i57h5fice7jp5nlm.png)

Slack was originally developed as a solution to a problem for game developers. In 2011, Tiny Speck was developing the online game ‘‘Glitch’’ and found that there wasn’t a team collaboration tool on the market that met their needs. So they created one! Through this, slack was born.

Here is a brief timeline about Slack:

- **2013**: Founded in 2013, Slack's instant messaging convenience quickly drew attention from companies, with 8,000 signing up in the first 24 hours of launch.
- **2014**: The company continued to grow, raising $120 million in 2014 and acquiring Screenhero to add screen sharing and voice chat capabilities.
- **2016**: With over 2.7 million daily active users by 2016, Slack raised another $200 million and its valuation soared to over $3.8 billion.
- **2018**: Enterprise Grid was launched in 2017 to target lucrative corporate clients, and Slack acquired HipChat and Stride from Atlassian in 2018 to further expand its reach.
- **2019**: The company made its debut on the New York Stock Exchange in 2019 and has continued to evolve and drive the future of workplace communication.

Now, Slack has become the primary form of workplace communication for many organisations, reducing email traffic and connecting remote teams.
Front-End vs Back-End
Tags: webdev, beginners, javascript, programming
Published: 2023-02-14 04:35:11

Front-End and Back-End are two of the most used terms in development world.
So, let's talk about the differences between two terms.

## Key Difference Between Front-End and Back-end

- Front-End developers focus on user-facing aspect of a web application.

- Back-end developers handle the application logic and data management.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32gvpzdrlzku5hb3asu4.jpg)
### What is Front-End Development?
Front-End Development, also known as clint-side development is the development of the graphical user interface of a website there user can interact with them directly. Front end developers work in languages like HTML, CSS, JavaScript.

- HTML - HTML stand for Hyper Text Markup Language. it's the standard markup language for creating the structure of webpages.

- CSS - CSS stands for Cascading Style Sheets. it is a style sheet language to define the style of web pages in terms of font, colors, background and more.

- JavaScript - JavaScript is a scripting language used to make web pages interactive and dynamic. it is an interpreted programming language with object-oriented capabilities.

Front end also works in its own set of frameworks and libraries. Here are just a few of the frameworks and libraries a front end developer would work with:

- AngularJS

- ReactJS

- jQuery

- Sass


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/huk9stabr736bqunzgg7.jpg)
### What is Back-End Development?
Back-end development involves working with applications, databases, and servers to handle the application logic and data management functionality of a web application. These technologies interact with the front-end, often using APIs, to form a full technology stack. Back-end developers work in languages like PHP, Java, Ruby, Python, JavaScript, and Node.js.

Back-End Framework and Database

- Express

- Django

- MySQL

- SQL Server

- MongoDB
AWS 基礎 Part 12 -- ECS のタスクで Spring アプリのイメージを動かす
Tags: aws, ecs, ecr, spirng
Published: 2023-02-14 04:32:13


## ECS クラスタのタスク定義の作成

ローカルで動作確認済みの Docker コンテナがある。
(springboot で作成し localhost:8080 で確認)
これを ECR に push 済みの状態。

* タスク定義名 : spring-task
* コンテナ名: hello-spring
* コンテナURL : {userId}.dkr.ecr.ap-northeast-1.amazonaws.com/hello-spring

これで spring-task というタスク定義を作成

まずはこれで実行タスクを作ってアクセスする。

----

## ECS クラスタの作成

- name: spring-cluster
- subnets: klein-private-{a,c}

---

## セキュリティグループの作成

EC2 の画面から作成する。

デフォルトでは http ポート80 しか許可していない。
ポート8080 で動かすアプリは ポート8080 も許可する必要がある。
nginx は ポート80 で動かすアプリなので必要なかったが。

- name: from-8080
- インバウンド: Custom TCP 8080

これで作成する。

なぜ HTTP ではなく TCP なのかは不明。

---

## 実行タスク作成

- 計算オプション: ローンチタイプ
- タスク族: spring-task
- コンテナ上書き → 自動で hello-spring に
- VPC サブネット -> クラスタと同じ
- セキュリティグループ: from-8080

これで作られるのを待つ

---

## Public IP から実行タスクにアクセスする

実行タスクが Running になってからアクセスする

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

Spring アプリにアクセスできた！

---

## Private IP から実行タスクにアクセスする

```php
ssh -i ~/.ssh/elb-ec2-test-key.pem \
ec2-user@18.step.server.ip 

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|
```

VPC 内部の踏み台サーバーに入って

```php
curl 10.springApp.private.ip:8080
Hello From Spring Resource! 
```

Spring アプリの実行タスクのプライベート IP に curl する。

レスポンスが返ってきた。

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

実行タスクにログも入っている。

---

## まとめ

Spring アプリを ECS で動かすためには
　
1. ローカルで Spring アプリを Docker イメージにビルドする
2. ローカルで Docker イメージを走らせる
3. localhost:8080 を叩いて動作確認する
4. ECR リポジトリを作る
5. ECR リポジトリに Docker イメージを push する
6. ECS クラスタを作る
7. ECS クラスタのタスク定義を ECR リポジトリから作る
8. セキュリティグループを作る
  * インバウンドルールの許可: HTTP 8080 ポート
9. 実行タスクを作る。前述で作ったこれらを使用。
  * タスク定義
  * セキュリティグループ
10. 実行タスクにアクセスして動作確認

これらの手順でできる。以上。
My Edo innovate web developmental journey
Published: 2023-02-14 04:10:05

feb 13th 2023.
 Today is the first day of the edo innovate,web developmental fundamental program.A brief introduction of the class was given,and the course outline was shared,its a program that will  run for eight weeks.Today i learnt introduction to the web and web fundamentals development. the evolution of the web and the major tools for building a website. which include html,css and javascript.
 I created a git hub account and learnt the basics of the git bash,Then there was a brief teaching on html its various versions and uses. pdfs and files were shared by our tutors to help in the journey.
Week 2: Junior to Intermediate Dev
Tags: beginners, webdev, programming
Published: 2023-02-14 00:42:20

## What is this series?
I've been a developer for 2 years but my learning lacked focus. With this series, I want to look back at what I've done for 6 months to move towards being an intermediate developer.

## TLDR
1. reflecting on week Friday afternoon was really helpful. I read through my conversations in Slack to see how inefficient I was at owning a project
2. TODOs before next week. Use github as a metric for how much code I'm pushing.

## Reflection on owning my last project

**Owning the project**
1. Get stakeholders on a call to understand the impact of the project. Throw out all assumptions and start from scratch.
2. Find Subject Matter Experts (SMEs)
3. Check-in with Product Manager for prioritization
4. Get metrics to justify the project

For step 1, I didn't realize that the stakeholders hadn't made much effort to address the issue on their own. They said the project was valuable but their actions said otherwise.

**Designing a solution**
1. writing a design doc revealed gaps in my high level understanding of the issue
2. brainstorm with a group
3. again "start from scratch" mentality
4. TLDRs are welcome in any documentation


## Mental frameworks
### Starters | Finishers | Optimizers
1. **Starters** get dopamine hits from new ideas, finding problems to solve.
2. **Finishers** get dopamine hits from well defined to-do lists.
3. **Optimizers** get dopamine hits from dragging projects beyond scope to "perfection"

Evaluate which one you are. Try to use it to your advantage when you can (ie - starters can help product managers find meaningful work for a team). Keep the framework top of mind to notice when you'd benefit from playing another role.

### Skill development isn't linear

Skill development is logarithmic. To motivate ourselves, we can use small tasks to make the learning curve feel steep in the short term. However in the long term, I'd imagine its wise to notice when you're in the tail end of your learning curve so that you can jump to an entirely new skill.

![logarithmic growth](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8zy4mfgr5fakte3f7u11.png)
> First heard of this in James Clear's newsletter but I found it again [here](https://medium.com/the-blog-of-james-clear/the-2-types-of-growth-which-one-of-these-growth-curves-are-you-following-262c6266db25)

I don't agree with the faster growth in this diagram, but I agree you can disguise a large logarithmic curve as many small wins. The inaccuracy in the diagram comes from the steepness of the smaller growths when time is large. Smaller tasks don't give much growth to an expert in comparison to their total knowledge, hence why this is a logarithmic growth curve in the first place.
Linode + DEV Hackathon
Tags: linodehackathon
Published: 2023-02-14 04:07:23

## What I built


### Category Submission:


### App Link


### Screenshots


### Description
 

### Link to Source Code


### Permissive License


## Background
(What made you decide to build this particular app? What inspired you?)


### How I built it
(How did you utilize Linode? Did you learn something new along the way? Pick up a new skill?)


### Additional Resources/Info
ThirdWeb Hackathon
Published: 2023-02-14 03:40:05

My first experience with thirdWeb GamingKit and ContractKit was for developing a web3 game.

"Momentum" is a massive player strategy game that features a very simple game mechanism. To be successful, you must possess the skill to make the right move at the right moment.

The full game rules can be found at https://github.com/hiukim/thirdweb-game/blob/master/Rules.md

The tech stack is as follows:

The backend is implemented as a smart contract that can be deployed on an EVM-compatible blockchain. All the gaming data and players' moves are stored on-chain and are publicly viewable and verifiable.

I used ContractKit provided by thirdWeb, which allowed me to deploy the contract easily and manage it in a web dashboard.

The frontend gaming interface is developed with Unity using thirdWeb GamingKit. The gaming kit allows me to connect to a wallet and interact with the smart contract easily, so I can focus on the actual game implementation. The project can be exported to a WebGL application hosted on the web. The gaming kit also supports deploying the game to IPFS directly without any hassle.

A test version of the game is deployed to the Goerli network and IPFS, and here is a playable link for anyone interested: https://gateway.ipfscdn.io/ipfs/QmUudgzEzso4p3AJA4BmJGJbcu8qGJJP2sz77rdrDWUFJ9/
Book Review: Production Haskell
Tags: haskell, books, productivity, functional
Published: 2023-02-14 03:38:39

> Succeeding in Industry with Haskell

There are only a handful of industry resources using Haskell, despite being a fully-fledged production language used by dozens of [companies](https://github.com/erkmos/haskell-companies).

So I got instantly excited when I heard that [Matt Parsons](https://leanpub.com/u/matt-parsons) was working on the *[Production Haskell](https://leanpub.com/production-haskell)* book. A book about building and scaling Haskell usage in business? Yes, please!

It goes through various challenges in using Haskell professionally. Do you need help figuring out how to add logging to your production code base? Help with properly handling errors? Scared of Template Haskell? Talking to databases? Etc. Matt has years of experience and experiments working through these topics, so you don't have to go through all of it yourself.  It also provides helpful tips and best practices for working with Haskell in a production environment.

This is not a book for beginners or people who have yet to be sold on Haskell. It's not always flattering for the current state of things: there is rarely a correct answer. And as the author puts it: "Haskell is a hugely diverse landscape. There are many regional groups […] all have thriving Haskell ecosystems that have interesting dialects and differences in custom and practice." Don't expect *Production Haskell* to serve you the solution on a silver platter. Otherwise, you might get discouraged when by the end of the chapter, you have discovered a few different approaches, all flawed in their own way.

My main complaint is a few chapters that push the edge of what I consider production-relevant. A small chapter on library versioning? Well, it's nice to broaden our horizons, but nothing we really bothered with at work. A chapter on implementing length-indexed vectors using type-level programming that suck [author's words]? No, thank you.

I found social and engineering concerns incredibly thought-provoking and exciting. I feel like we don't talk about principles and [values](https://en.wikipedia.org/wiki/Value_(ethics_and_social_sciences)) nearly enough. When was the last time you thought about Empathy or Cohesion at work? The chapter *On Building Haskell* *Teams* is a nice bonus, which shows us how to teach and hire Haskell developers.

Overall, *[Production Haskell](https://leanpub.com/production-haskell)* is an excellent resource for anyone looking to learn how to use Haskell professionally. The book won't fulfil all of your production needs, but it'll make it easier – save you a bunch of time and spare you a few headaches. Whether you are starting on your first production project or already have some experience, this book will surely be a valuable companion in your journey to mastering Haskell.

---

💡 A hint for people who haven't used leanpub before: A `Read Free Sample` button gives you a chunk of the book for free, which is more than enough to get familiar with a book if you're still not sure about getting a full copy.
JavaScript Variable
Tags: javascript, webdev, beginners
Published: 2023-02-14 03:32:45

**What is variable in programming language?** 
A variable is a named storage location that holds a value. Variables are used to store data values that can be used later in your code. The value of a variable can be changed, as well as its data type, throughout the execution of a program.

**How to create variable in JavaScript?** 
To declare a variable in JavaScript, you use the `var`, `let`, or `const` keywords, followed by the variable name. Let's declare a few variable. 

![JavaScript Variable](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdiqu0pt6thl6b9wcb4a.png)


**Variable declared using `var`**
The `var` keyword is used to declare a variable with function scope, which means that the variable is accessible within the entire function where it was declared.

![Variable declaration using var](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yhwl6bff3r77y1h33tgw.png)


**Variable declared using `let`**
The let keyword is used to declare a variable with block scope, which means that the variable is accessible only within the block in which it was declared.

![Variable declaration using let](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q60eq3tk8jw0fhenn0t3.png)






**Variable declared using `const`**
The const keyword is used to declare a constant, which is a variable whose value cannot be changed.

![Variable declaration using const](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4835uppbnomvyfxnfai.png)




**How to name a variable?** 
It's good practice to use descriptive names for your variables to make your code more readable and easier to maintain. Avoid using reserved words as variable names, and use camelCase or snake_case to separate words in your variable names


**Summary**
Variable is used to store data. In JavaScript, a variable is declared using `var`, `let` and `const`. It's best practice to give descriptive name to variable.

_**Thanks for reading.**_
_Comment your thoughts and share if this can help others._