teleren/devto huggingface dataset:
2주만 투자해서 쿼티(QWERTY)에서 드보락(Dvorak)으로 바꿔보세요
Tags: dvorak, qwerty, productivity, keyboard
Published: 2020-05-09 12:21:50

---
title: 2주만 투자해서 쿼티(QWERTY)에서 드보락(Dvorak)으로 바꿔보세요
published: true
description: 
tags: dvorak, qwerty, productivity, keyboard
---

평생 쿼티(QWERTY)만 쓰다가 6개월전 드보락(Dvorak)으로 바꿔서 지금까지 잘 쓰고있어요. 그동안 느낀 드보락의 장점과 단점을 한번 공유해볼게요.

# 장점 - 손목을 너무 안움직여서 이상함

드보락을 쓰기 시작하고 익숙해 질때 쯤 느낀점으로는 손목을 너무 안움직여서 이상하다는거였어요. 정신없이 움직이는걸 기대하고 있는 제 머슬메모리를 실망시키는 느낌이었죠. 신기한건 이 느낌을 드보락을 쓰는 모든 사람들이 공통적으로 느낀다는 점이에요. 이러한 이유 중 하나로는 가장 많이 쓰이는 키가 홈로우(home row)라는 가장 접근성이 좋은 위치에 밀집돼있어서에요. 아래 히트맵을 한번 보시죠.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gpfyu0f6hdnurj48frfm.jpeg)

# 장점 - 손이 병렬처리 최적화 업데이트 받은느낌

드보락은 양 손과 손가락의 교차를 극대화한 디자인이에요. 물론 이 디자인은 더 빠른 타자로 직결되지만 그게 중요한게 아니에요. 프로그래머한테 타자 속도는 중요하지 않아요(뇌가 손가락보다 빠르다면 모를까). 프로그래머는 항상 같은 단어를 반복적으로 쓰기 마련이죠. 하지만 개중에는 한손으로 왼쪽 오른쪽 위아래를 훌쩍훌쩍 오가면서 댄스를 춰야만 입력할 수 있는 단어가 많아요. 대표적인 예로 `var`가 있죠. 이러한 습관은 손에 피로감도 줄 뿐더러 장기적으로 건강에도 좋지 않아요(제 프로그래머 친구중 한명은 26살에 손목터널이 왔답니다). 하지만 드보락에서는 히트가 잘 분산돼있고, 최소한의 움직임만을 요하므로 위험과 피로도가 덜하죠.

# 장점 - 생각보다 오래 안걸림

저는 2주도 안걸렸어요. 제가 했다는건 독자분들은 더 빨리 할 수 있다는 뜻이에요. `vim` 나 `emacs` 사용법을 익히는것과 다를바 없어요. 처음에는 어색하지만 금방 익숙해 질거에요.

# 단점(이 아닐수도 있음) - 단축키

지금은 아니지만 전에는 단축키 때문에 애좀 먹었어요. 드보락으로 바꾸면 단축키가 다음과 같이 바뀌어요.

액션 | 전 | 후
---  | ----- | ------
undo  | cmd+z | cmd+/
copy  | cmd+c | cmd+i  
cut   | cmd+x | cmd+b  
paste | cmd+v | cmd+. 
quit  | cmd+q | cmd+x

...

그래서 제가 처음에 했던건 맥(MacOS)의 `Dvorak + QWERTY Command` 키보드 레이아웃을 이용하는 거였어요. 이 레이아웃은 커맨드 키를 누른는 동안에는 쿼티를 활성화 해서 커맨드 키를 이용한 단축키는 쿼티처럼 이용할 수 있게 해줘요. 하지만 다음과같은 이유로 결국엔 단축키도 드보락으로 바꿔야만 했어요

* 어떤 에디터에서는 작동이 안됨 예) 맥용 비주얼스투디오2019(Visual Studio 2019 for Mac)
* 다른 어시스턴드키(assistant key)에는 적용이 안됨. 그래서 터미널에서는 무쓸모

드보락 단축키에 익숙해지는건 금방이었어요. 익숙해 진후 쿼티 단축키와 비교해봤을때 전혀 불편한 점은 없어요.

# 단점 - 한글 및 다른 언어 키보드와 헷갈림

드보락에 아무리 익숙해 진다 하더라도 결국 한글이나 다른 언어를 사용할땐 특수문지나 단축키는 여전히 쿼티로 써야해요. 프로그래머들은 한글이랑 영어를 자주 섞어쓰니 언어를 바꿀때마다 단축키랑 특수문자 위치가 휙휙 바뀌면 헷갈리겠죠? 가끔 드보락인걸 까먹고 잘라내기 `Cmd+x`를 했다가 프로그램을 꺼버리는(드보락은 `q`가 `x`자리에 있음) 사고는 어쩔수없어요.

# 쿼티모드 <-> 드보락모드 로 휙휙 왔다갔다는 불가능

저는 처음 드보락을 배울때 익숙해지고 나면 영어를 쿼티랑 드보락을 자유자재로 쓸 수 있을줄알았어요. 하지만 아니더라고요. 한참 드보락 영타 치다가 갑자기 쿼티 영타 치려고 하면 힘들어요. 쿼티모드로 돌아오는데 시간이 좀 걸려요.

# 결론

드보락은 너무나도 편안하고 인체 친화적인 디자인이에요. 하지만 우리나라 개발자들처럼 다른 언어와 왔다갔다 해야 하는 사람들에겐 많이 헷갈릴 수 있어요.
Iterator in Python
Published: 2020-05-09 12:57:22

In <a href="https://python.org">Python</a>, an iterable is any object you can iterate. It can be a list, a sequence and other types of collections.

If you have an iterable, you can pass it in `iter()` and use `next()` to iterate over it. It will return a new element of the iterable each time you call the `next()` function.

The example below creates an iterable (a <a href="https://pythonprogramminglanguage.com/lists/">list</a>) that we then loop over using both an iterator and a for loop.

```python
# creating a list
new_list = [1, 2, 3, 4, 5]

# using iter()
new_iter = iter(new_list)

# print 1
print(next(new_iter))

# print 2
print(next(new_iter))

# print 3
print(new_iter.__next__())

# print 7
print(new_iter.__next__())

# print 9
print(new_iter.__next__())

# looping thru new_list with a for loop
for element in new_list:
    print(element)
```

This would output:

```
1
2
3
4
5
1
2
3
4
5
```

So you can use both a <a href="https://pythonprogramminglanguage.com/for-loops/">for loop</a> or an <a href="https://pythonbasics.org/iterable/">iterator</a> to go over an object. 

To use `iter()` the object must be an iterable and not a single value like an integer.

If there is no new item, it will throw an StopException:

```python
>>> s = ['Tea','Milk','Water']
>>> itb = iter(s)
>>> next(itb)
'Tea'
>>> next(itb)
'Milk'
>>> next(itb)
'Water'
>>> next(itb)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 
```
How to easily test REST endpoints in Laravel with minimal syntax.
Tags: laravel, php, tdd
Published: 2020-05-09 12:46:59

---
title: How to easily test REST endpoints in Laravel with minimal syntax.
published: true
description: How to write small-footprint durable JSON tests
tags: Laravel, PHP, TDD
cover_image: https://arter.dev/images/carbon(1).png
---

When I write unit tests for APIs, I try to write tests that are as flexible and durable as possible. I try my best to avoid brittle tests that may break if some implementation in my code base should change.

Ideally, tests should not care at all about the implementation, and only care that with X input, we get Y output. Some of your endpoints may return Laravel API Resources. I've seen some developers write tests that ensure that the resource is returned compared to a given shape / array. But, we don't really care about that, do we? We may change our API Resource class, but we want our test to stay resilient.

In the example image above, we'll say we only really care that the title and content of a post is included in the API response. Other fields may change in our resource, but this test ensures that those two fields are always contained in the response.

This is best achieved by using assertJsonFragment. You may have used `assertJson()` before, but since we are interested in creating as durable tests as possible, `assertJsonFragment` ensures the tests won't fail if the shape of our returned response changes.

[Continue reading](https://arter.dev/posts/quick-tip-how-to-easily-test-rest-endpoints-with-minimal-syntax/)
How to send code sample when applying for a job?
Tags: career, computerscience
Published: 2020-05-09 12:37:26

While browsing some of the projects I'm currently immersed into I came across an old job post (Nov. 2018) from one of the companies that I had my eyes on for a while.

While I am currently employed, I figured it can't help to send an email, right? The answer didn't fail to arrive, tho.

Therefore, after a quick chat with their representative, they asked me submit my CV, a cover letter (?!) and some code sample. Worth to mention that the job posting I initially found was long gone, however they said that they might find something for me. I assume they don't get many random job applications.

So far so good. My CV is up to date, I read a bunch of things about cover letters on dev.to, but I can't figure out a way  to submit some code sample.

I have always worked "for someone". All the code I produced belongs to a company. At my current job I do work with the same technologies as the company I am applying to, yet I can't ask my boss to allow me to send some code to a company that might "steal" me.

I can take some classes, change a few variable names and submit that, but I have no idea what the reviewer might see in it.

Therefore, what options do I have? What would you guys recommend?
How to become a better Code Reviewer - Part 1 : Code Review
Tags: codenewbie, computerscience, csharp, java
Published: 2020-05-09 12:30:33

Hi all, For those who don't me I'm Divakar, Passionate developer with 5 years of experience in web and mobile development. I learned software development the hard way, following lots of confusing tutorials, failing to understand core concepts and finally having no idea how things work. So I wanted to help the community to understand it in a better way without any hassle.

###**Code Review**:
Code review has been widely adopted by and adapted to open source and industrial projects. It is a process where someone other than the author(s) of the chunk of code evaluates the code. Most of the companies adopted this process to ensure quality of the code and product.

The purpose of code review is to make sure that the overall code health of codebase is improving over time , having said that this becomes tricky since over time codebase degrade when a team is under significant time constraints and they feel to take shortcuts inorder to complete the tasks.

As a reviewer you want to ensure that codebase stays consistent and maintainable.

<img src="https://media1.tenor.com/images/10a5217e9ef0aed7e6e270ca0a68c83e/tenor.gif?itemid=5637869" width="4096"/>


### **Prepare yourself**:

Before proceeding with a code review I always prepare myself to accept these things

- **No Fear**
The first and most popular is the fear of offending an author of the code. Don't pretend that you didn't see his/her bugs today ,so that tomorrow he/she will ignore your mistakes.This is the kind of attitude this fear produces.
- **No Perfect code** 
Key point is that there is no such thing as "perfect" code only a "better" code. Don't make the author to change every tiny piece of the code ,before granting the approval.Rather, you should seek continuous improvement in terms of maintainability , readability and understandability of the system.
- **Mentoring**
Sharing knowledge is part of improving the code health of system over time. You can leave comments that help a developer to learn something new . 

-----------------
### **Next Steps:**

{% link https://dev.to/divakarkumar/how-to-become-a-better-code-reviewer-part-2-what-code-reviewers-look-for-302b %}


Banner Image Courtesy : <a href="https://www.freepik.com/free-photos-vectors/business">Business vector created by freepik - </a><a href="http://www.freepik.com">www.freepik.com</a>
My aiohttp and jinja2 app sample
Tags: python, aiohttp, jinja2
Published: 2020-05-09 12:30:07

Recently, I started to use [aiohttp](https://docs.aiohttp.org/en/stable/web_quickstart.html) server and [aiohttp_jinja2](https://aiohttp-jinja2.readthedocs.io/en/stable/) for my personal project. It is very useful.

My python version is 3.8.2. 

```sh
$ python --version
Python 3.8.2

# requirements.txt
aiohttp[speedups]
aiohttp_jinja

pip install aiohttp[speedups]
pip install aiohttp_jinja
```

Project directory is like below

```sh
.
└── app
    ├── main.py
    └── templates
        ├── index.html
        └── layout.html
```

aiohttp_jinja and aiohttp Class Based View can be used like below example.

```python
# main.py

import logging
import pathlib
import sys

import jinja2
import aiohttp_jinja2
from aiohttp import web

@aiohttp_jinja2.template("index.html")
class HomeHandler(web.View):

    async def get(self):
        return {}
    
    async def post(self):
        form = await self.request.post()
        return {"name":form['name']}
    

if __name__ == "__main__":
    
    logging.basicConfig(level=logging.DEBUG)

    app = web.Application()

    # setup jinja2 
    aiohttp_jinja2.setup(app,
        loader=jinja2.FileSystemLoader(
            'templates'
            ))
    
    app.router.add_get('/', HomeHandler, name="index")
    app.router.add_post('/', HomeHandler)


    web.run_app(app)
```

```html
<!-- layout.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>aiohttp and jinja test</title>
</head>
<body>

    <h1>My aiohttp jinja demo</h1>

    {%block body%}{%endblock%}
    
</body>
</html>

```

```html
<!-- index.html -->
{% extends "layout.html" %}
{% set title = "Main" %}
{% block body %}

    <h2>Form test extended from layout.html</h2>

    <form method="POST" action="{{ url('index') }}">
        <input type="text" name="name" id="name"/>
        <input type="submit">
    </form>

    {% if name %}

        <p>My name is {{ name }}</p>

    {% endif %}
{% endblock %}
```
List vs numpy
Tags: python
Published: 2020-05-09 12:28:51

Python supports lists, so why would you use <a href="https://numpy.org/">numpy</a>? 

Technically they're both Python <a href="https://pythonprogramminglanguage.com/lists/">lists</a>, but creating them may be different in times of performance. Let's put it to the test.

First we test how long it takes to add a lot of numbers to a list `c[]` and measure that. 

Because we use Python lists we don't need any modules other than the `time` module.

```python
import time
start = time.clock()
a = range(10000000)	
b = range(10000000)
c = []
for i in range(len(a)):
	c.append(a[i] + b[i])
elapsed = (time.clock() - start)
print("List Time used:",elapsed)
```

```
List Time used: 4.712518
```

Then we measure how long that takes with <a href="https://numpy.org/">numpy</a>. 

The module `numpy` should be installed on your computer or <a href="https://pythonbasics.org/virtualenv/">virtual environment</a>. 

You can install it with <a href="https://pythonbasics.org/how-to-use-pip-and-pypi/">pip</a> if you don't have it installed.

```python
import time
start = time.clock()
import numpy as np
a = np.arange(10000000)
b = np.arange(10000000)
c = a + b
elapsed = (time.clock() - start)
print("Time used:",elapsed)
```

```
Time used: 0.693733
```

These measurements are on my pc, so on your pc they may be different. So it can be a lot faster to use numpy when creating lists.

In this case it was almost 10 times faster, so if you want to increase performance it may be as simple as switching to numpy.
Progressbar in Python
Tags: python
Published: 2020-05-09 12:14:49

A progressbar can be created in the terminal using Python. Developers often use a terminal, so you sometimes need some kind of interface.

A progressbar shows you how long the process is taking, there are several ways to show one (like modules), but you can code it manually.

In Python you can use the code below to create a progress bar:

```python
# -*- coding: utf-8 -*-
import sys


# Print iterations progress
def print_progress(iteration, total, prefix='', suffix='', decimals=1, bar_length=100):
    """
    Call in a loop to create terminal progress bar
    @params:
        iteration   - Required  : current iteration (Int)
        total       - Required  : total iterations (Int)
        prefix      - Optional  : prefix string (Str)
        suffix      - Optional  : suffix string (Str)
        decimals    - Optional  : positive number of decimals in percent complete (Int)
        bar_length  - Optional  : character length of bar (Int)
    """
    str_format = "{0:." + str(decimals) + "f}"
    percents = str_format.format(100 * (iteration / float(total)))
    filled_length = int(round(bar_length * iteration / float(total)))
    bar = '█' * filled_length + '-' * (bar_length - filled_length)

    sys.stdout.write('\r%s |%s| %s%s %s' % (prefix, bar, percents, '%', suffix)),

    if iteration == total:
        sys.stdout.write('\n')
    sys.stdout.flush()

print_progress(40,100)
```

This outputs a simple bar, something like:

```
|████████████████████████████████████████-------------------------| 40.0% %    
```

I shrunk the bar a bit because it didn't fit the screen, but it's the same idea. So you can make something like this:

<img src="https://dev-to-uploads.s3.amazonaws.com/i/4dm1nly5gac97cpyduz4.gif">

**Related links:**
* <a href="https://pythonbasics.org">Learn Python programming</a>
* <a href="https://stackoverflow.com/questions/3160699/python-progress-bar">More progressbar examples</a>
Introducing Storybook Addon Performance🚀
Tags: react, javascript, webdev
Published: 2020-05-09 12:14:36

Good day! Today I will introduce an awesome tool that will be useful for every React developer. Storybook Add-on Performance🚀!!!.

Who doesn't know about storybook:

{% github https://github.com/storybookjs/storybook %}

Over the year Atlassian team worked on the experimental addon for a storybook. This add-on can help to understand and debug performance problems with React components.

![Performanse tests](https://i.ibb.co/hDPrn53/ezgif-3-bcc209c4a81c.gif)

## When should I use it?
1. During development, you can take into consideration the results of the tests. The performance metrics will show when something goes wrong.
2. For performance issues. Reports from performance addon can show how effective your refactor is.

## Tips for correct performing measurements

1. Part of metrics has constant results during repeated tests and has no direct effect on performance:
  * string output size
  * string output size(gzip)
  * static markup output size
  * static markup output size(gzip)
  * dom elements count

2. The results of rendering metrics have a significant difference during repeated tests:
  * initial render
  * re-render
  * render to string
  * render to static markup
  * hydrate
![dirferent results during repeated tests](https://i.ibb.co/86TZQQn/Screenshot-2020-05-09-at-13-53-24.png)

3. To minimize inaccuracy you can
  * choose the max count of samples
  * repeat tests and compare results on the same machine with the same 
  state of the system (system upload and the temperature has an efficient 
  effect)
  * for QA testing you can use a separate computer with turn off thermal throttling, turn off turbo boost, and with setting the maximum number of fan revolutions

4. Use the 99 percentile for measurements. The explanation is in this [article](https://medium.com/@ankur_anand/an-in-depth-introduction-to-99-percentile-for-programmers-22e83a00caf).

Enjoy!🤟
{% github https://github.com/atlassian-labs/storybook-addon-performance %}
Build laravel development environment with docker
Tags: laravel, docker, php
Published: 2020-05-09 12:05:34

I created a nice development environment for Laravel 👍

## Repository

https://github.com/ucan-lab/docker-laravel

Please try it ⭐️

## Installing Docker

https://docs.docker.com/docker-for-mac/install/

## Project Structure

```
.
├── src # Laravel project root directory
└── infra
     ├── docker
     │   ├── mysql
     │   │   ├── Dockerfile
     │   │   └── my.cnf
     │   ├── nginx
     │   │   ├── Dockerfile
     │   │   ├── Dockerfile.production
     │   │   └── default.conf
     │   └── php
     │       ├── Dockerfile
     │       ├── Dockerfile.production
     │       ├── bash
     │       │   ├── .bash_history
     │       │   └── psysh
     │       ├── php-fpm.d
     │       │   └── zzz-www.conf => unix domain socket config file
     │       ├── php.ini
     │       └── php.production.ini
     └── docker-compose.yml
```

## How to use

Read the [Makefile](https://github.com/ucan-lab/docker-laravel/blob/master/infrastructure/Makefile) for the contents

### A. Create a new laravel project

```
$ git clone git@github.com:ucan-lab/docker-laravel.git
$ cd docker-laravel
$ mkdir -p src
$ docker compose build
$ docker compose up -d
$ docker compose exec app composer create-project --prefer-dist laravel/laravel .
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate
```

http://localhost

### B. Create a clone laravel project

```
$ git clone git@github.com:ucan-lab/docker-laravel.git
$ cd docker-laravel
$ mkdir -p src
$ docker compose build
$ docker compose up -d

$ docker compose exec app composer create-project --prefer-dist "laravel/laravel=6.*" .

$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate
```

http://localhost
Understanding Kubernetes: part 20 – Pods pull images configuration
Tags: kubernetes, devops, docker, beginners
Published: 2020-05-09 12:02:54

---
title: Understanding Kubernetes: part 20 – Pods pull images configuration
published: true
description: Serie of sketchnotes about Kubernetes. Explaining in a visual way Kubernetes principles.
tags: Kubernetes, DevOps, Docker, beginners
series: Understanding Kubernetes in sketchnotes
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/ty3icklf1go0khe83zw0.jpg
---

Understanding Kubernetes can be difficult or time-consuming. In order to spread knowledges about Cloud technologies I started to create sketchnotes about Kubernetes. I think it could be a good way, more visual, to explain Kubernetes (and others technologies).

We continue the serie of Sketchnotes about Kubernetes, we talked about Pods but what about his pull images configuration?

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ty3icklf1go0khe83zw0.jpg)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/51udfxqri1vvvjx40m7e.jpg)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8ooabh6vb9248ofq700s.jpg)

If you are interested, I published all the sketchnotes on Kubernetes (and new ones!) to make a "book" of 120 pages: ["Understanding Kubernetes in a visual way"](https://gumroad.com/aurelievache#uCxcr).

As usual, if you like theses sketchnotes, you can follow me, and tell me what do you think. I will publish others sketchs shortly :-).
KinD - Tool to Create a Multi-node Cluster on Your Laptop. Hands-on Demo with Example of Autoscaling
Tags: kind, kubernetes, multinodecluster
Published: 2020-05-09 12:02:16

KinD- An useful tool to create Multinode Kubernetes cluster on laptop. Production like K8s cluster on laptop is increases the productivity of a developer while debugging issues.

The following video explains
- How to install KinD on your laptop?
- How to create K8s Cluster using KinD?
- Deploying applications K8s cluster
- How to Cluster Scaler & HPA works?

Check the link: https://youtu.be/RTkoQiJ1x8w

{%youtube RTkoQiJ1x8w %}
May 9 — Daily CodeNewbie Check-in Thread
Tags: codenewbie, checkin, beginners, discuss
Published: 2020-05-09 12:00:31

---
title: May 9 — Daily CodeNewbie Check-in Thread
published: true
description: A daily thread to ask questions, share progress, and stay accountable!
tags: codenewbie, checkin, beginners, discuss
series: Daily Checkin
---

You are encouraged to use this daily thread to:
- Ask for help (all questions encouraged)
- Explore topics you’re curious about
- Share something you’ve written or read
- Celebrate your wins
- Stay accountable to your goals
- Support your fellow programmers

Happy Coding!

---

_Interested in joining the twice-weekly live [#CodeNewbie Twitter chats](https://twitter.com/search?q=codenewbie)?  You can find us [on Twitter](https://twitter.com/search?q=codenewbie) each Wednesday at 9pm ET (1am GMT on Thursday) and Sunday at 2pm ET (6pm GMT)!_
Daily Developer Jokes - Saturday, May 9, 2020
Tags: jokes, dailydeveloperjokes
Published: 2020-05-09 12:00:25

---
title: "Daily Developer Jokes - Saturday, May 9, 2020"
description: "Check out today's daily developer joke! (a project by Fred Adams at xtrp.io)"
series: "Daily Developer Jokes"
cover_image: "https://private.xtrp.io/projects/DailyDeveloperJokes/thumbnail_generator/?date=Saturday%2C%20May%209%2C%202020"
published: true
tags: #jokes, #dailydeveloperjokes
---

Generated by Daily Developer Jokes, a project by [Fred Adams](https://xtrp.io/) ([@xtrp](https://dev.to/xtrp) on DEV)

___Read about Daily Developer Jokes on [this blog post](https://xtrp.io/blog/2020/01/12/daily-jokes-bot-release/), and check out the [Daily Developer Jokes Website](https://dailydeveloperjokes.github.io/).___
### Today's Joke is...
![Joke Image](https://private.xtrp.io/projects/DailyDeveloperJokes/public_image_server/images/5e1258d5a93a0.png)

---
*Have a joke idea for a future post? Email ___[xtrp@xtrp.io](mailto:xtrp@xtrp.io)___ with your suggestions!*

*This joke comes from [Dad-Jokes GitHub Repo by Wes Bos](https://github.com/wesbos/dad-jokes) (thank you!), whose owner has given me permission to use this joke with credit.*

<!-- 
Joke text:
___Q:___ What do you get when you cross a computer with an elephant?

___A:___ Lots of memory!
 -->