## DEV Community is a community of 867,901 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Nick Taylor

Posted on

# February 17th, 2022: What did you learn this week?

It's that time of the week again. So wonderful devs, what did you learn this week? It could be programming tips, career advice etc.

Feel free to comment with what you learnt and/or reference your TIL post to give it some more exposure.

## #todayilearned

Summarize a concept that is new to you.

And remember, if something you learnt was a big win for you, then you know where to drop it as well.👇👇🏻👇🏼👇🏽👇🏾👇🏿

## Discussion (21)

aruna-x

I learned that git switch is useful for moving changes over to a new branch if you forget to checkout before working 🙃 Stuff happens 🤷‍♀️

In the process of getting feedback about my recently engineered portfolio site, I also learned to better value my talents as a dev, instead of being so modest I “undersell” myself. I have no interest in overselling either - but self confidence is somewhere in the middle, and I’m learning to be there more often. Getting ample feedback about my projects from my dev friends helps that along :)

Nick Taylor

Awesome!

K (he/him) • Edited on

I'm currently creating a Web3 course and so I read about elliptic curve cryptography. I wanted to understand what the keys in Ethereum actually are.

ECC is based on elliptic curves; basically, math functions on a 2D space `(x/y)`.

ECC on Ethereum uses a particular standard curve, called secp256k1.

This curve is defined by the equation `y²=x³+7 mod p` or `y=sqrt(x³+7) mod p`

The curve doesn't use the real numbers, but a fixed set of numbers called a finite field.

A fixed set of numbers, in this case, means there are `115792089237316195423570985008687907853269984665640564039457584007908834671663` numbers in the field that secp256k1 is defined for. This number is the `p` from the equation above, a large prime number. Crazy big, but still smaller than all real numbers, lol.

The idea here is if you calculate something and it gets greater than `p`, you get an overflow and go on from `0`.

The private key is just a random integer between `0` and `p`.

This integer defines how often a base point `g` on that curve has to be added to itself to get the public key. The base point `g` is also predefined by secp256k1, and since it's a point on that curve, it's an `x` and `y` coordinate on the curve, and basically two big integers.

So, if the private key was `5`, the public key would be the result of `g+g+g+g+g`.

The `+` isn't a common addition but a more complex operation that uses two points (in this case, both `g`) to calculate a new point on the curve.

So, the public key would be a point, or an x and y coordinate on that `y²=x³+7 mod p` curve. Both `x` and `y` will be integers smaller than `p` because of overflow etc.

So to sum all up.

The private key is a random 256bit integer smaller than that big prime I mentioned.

The public key is two integers, essentially x and y coordinates, defining a point on the secp256k1 curve. You get this point by executing a special kind of addition on a predefined base point "private key times".

Nick Taylor

That's awesome! 🔥

Mukund Raghav Sharma (Moko)
• Started a course my Mitch Horowitz.
• Got a job offer to work with one of my Heroes in the Garbage Collection space. Going nuts about it but have set myself on a journey to master everything about the CLR.
• More Virtual Memory work via this
• Learnt that you can embed a style inside any tag such as: `<p> <style "background-color:red"> hi </style></p>``.
• Read more from Company of One been so behind on my reading because I have been incredibly busy with interview stuff.
Nick Taylor

Nice!

dbc2201

I started learning JavaFX again, left it some years ago because my job didn't allow much time for it. The new thing I learned about it is there isn't enough documentation or resources to properly get started, it feels staggered. Compared to the UI libraries of C#, Microsoft did a very good job to make it feel more cohesive with the .net platform for developers, wish Oracle could do the same.

Nick Taylor

Nikhil Seth

I learnt that I need to conserve my keystrokes and use writing as a medium to convey my point to a larger audience.
Based on this advice, I wrote documents for a service that I am implementing at work.

Along with this, I am adding a blog functionality to my website (using DatoCMS) and shall be sharing/learning in public using my writing. (I shall keep you updated on this).

I am continuing my financial education using books and have finally sought a financial adviser to better guide me through my journey.

May I please know what you learnt @nickytonline ?

Nick Taylor • Edited on

What I learnt this past week was that there are now Netlify scheduled functions.

Nkem

I am currently learning Javascript with Scrimba. Learning by building apps.

Nick Taylor

Waylon Walker

visidata is such a good tui for almost all things json, including aws eventbridge rules comfing from the cli.

waylonwalker.com/til/aws-eventbrid...

Nick Taylor

Lucia Cerchie

I learned how to get started with a MongoDB database

Nick Taylor

Let's go!

Deathvenom

Completed my project github.com/DeathVenom54/github-dep...
Proud of it, and explaining article coming soon :D

Nick Taylor

Noice!

Meat Boy

Recipe for carrot muffins. Seriously, my biggest discovery of the week :D

Nick Taylor

Nice!

Ryan Jentzsch

This is embarrassing but I'll share anyway. I've been developing software for over 25 years. I spent 3 hours today trying to figure out why in my react app that I assigning the variable `document` to a File object and `document` kept showing as undefined. Well, friends `document` is a reserved word in JS (at least that's how Babel seems to be treating it under the hood). But instead of throwing errors that I did something stupid it failed silently and just assigned undefined. Very frustrating.