Plan and done for Oct-06-2018

What will I learn today?

Keep solving and submitting CodeWars assignments.

Done

Solved reverse or rotate assignment and the most interesting as always - what is considered as best practice and clever solution by other members. The give solution is definitely clever and declarative (I strive to be as declarative as I can) and I've learned some stuff from it.

  1. Dividing integer by integer in C# you'll get an integer and never a float/double/decimal. No decimal delimiter! Never. No need for Math.round or Math.floor. Short SO explanation.
  2. There is an Enumerable.Range(). It works almost like range() in Python: string.Join(",", Enumerable.Range(1,5)) will produce "1,2,3,4,5". Almost like Python but not exactly because in Python the upper bound isn't included in the result, and we have additional method overload with a third parameter as step for generating the sequence.
  3. There are two versions of Reverse() method: one is for List collection, another is for objects with IEnumerable implemented. First is in place, second returns IEnumerable compatible. The reasons are historical. For strings we can use both, but the second seems more declarative.
char[] charArray = chunk.ToCharArray();
Array.Reverse( charArray  );
string result = new string( charArray  );
string result = new string(chunk.Reverse().ToArray());

Plan and done for Oct-04-2018

There is a bunch of articles and a requirement to write 3-4 sentences about each of them.

Upgrade Your Tech Skills with Deliberate Practice

The article emphasizes the need of practice outside a comfort zone and cites requirements of effective and successful practice. While I'm agreed in general, there is one of it which alarms me: the practice should be hard. For me - it should be rather challenging, inspiring you to find the solution, rather than being hard. Hard things could easily kill productivity and end up considered as hardly achievable. It's all about the balance between existing knowledge and those required to solve the problem.

Carol Dweck on the Growth Mindset

The speech for TED presents the slightly different view to the problem of practicing and finding solution to problems. It discusses the need for setting educational efforts and attention not on achieving the result now, but on the process of finding solution. From my prospective it's definitely important to emphasize the progress, but it doesn't address the real question - how to motivate, how to set the focus on ongoing process of finding a solution instead of stuck-and-give up strategy on one hand or on the other where a result is not the goal, but the process.

Angela Lee Duckworth on Grit

This talk was interesting in a way, that it defines the grit as a base to build steady path of development. But in no words it addresses the way to achieve, to develop the grit trait. It interfere with the previous talk where we're presented with the idea of equality as a measure of successfully acquired process thinking strategy on the way to achieving results. We have a grit as a criteria of highly achievers but we don't know exactly how to raise them.

Alain de Botton on Redefining Success

Success as a measure not only of personal efforts but as an indicator of lots of other people's lives and as a sum of different events, with a dash of chance is the topic of the speech. It's quite natural for me to take life as some kind of adventure. Plus Russian traditions (family, literature) and my parents' engineering approach define success in a way which is different from American. Self-exploration, discovery, and application of your passion for real life, to other people's lives, makes the person successful.

The Drs. Sarah on Impostor Syndrome - Pt 2

A discussion on different encounters of imposter syndrome. I'm glad they mentioned the need for balance between being humble and self-confident. I haven't got the balance yet, so I was glad to hear their suggestions: meditate, breathe, affirmation (I'm positive, I'll get the position; I'll make the presentation); write - free writing.

Plan and done for Sep-28-2018

What did we learn?

Hard to pull together everything - server routes, functions, DB queries, ejs parts. I felt a need for some best practice routines to handle it.

Keep consistency while working with data on the server-side. Drawing DB schema and data lifecycle inside your app help a lot.

CSS - styling modules, positioning. Weirdness with Unicode - on mobile heart symbol is converted to emoji and becomes red no matter the actual font color set by CSS.

Add to favorites was a challenging adventure cause it requires to design how data should flow between different views in a consistent way.

What still puzzles us, or what do we need to learn more about?

Building REST API - implementing all routes and methods for the full-fledged project

Plan and done for Sep-21-2018

What did we do well, that if we don’t discuss we might forget?

Practiced in debugging Express <=> Postgres interaction;

What did we learn?

Craft your database schema carefully not to be bitten by poor design later: we created the table with the unique constraint on author column and today were debugging insertion error for 20 minutes before found the reason why we can't add another book.

What should we do differently next time?

Spend more time on styling.

What still puzzles us, or what do we need to learn more about?

Best practices for creating a robust server with Node/Express/DB with input validation and unified error handling. Current state looks fragile.

Plan and done for Sep-20-2018

What did we do well, that if we don’t discuss we might forget?

Added validation and sanitizing by existing validator for Node.js

What did we learn?

Practiced using validator.js and handling errors on the server side.

What should we do differently next time?

Spent more time on styling.

What still puzzles us, or what do we need to learn more about?

Error handling and best practices in it.

Plan and done for Sep-19-2018

C#

I've started practicing basic C# fluency by taking small assessments on CodeWars. The first logistical question I've got - how to setup a test env for C# projects? My steps (based on many sources but primarily on MS dotnet Core guide) include:

Packages to install (with dotnet add package PackageName):

  • NUnit;
  • NUnit.Console;
  • NUnit.ConsoleRunner;
  • NUnit.Runners;

Folders/files setup:

  • start a project: dotnet new console -o "MyAppName";
  • initialize a solution cd MyAppName; dotnet new sln;
  • initialize a main project mkdir ProjectName; cd ProjectName; dotnet new classLib;
  • add the main project to the solution cd ..; dotnet sln add ./ProjectName/ProjectName.csproj;
  • initialize a test project mkdir ProjectName.Tests; cd ProjectName.Tests; dotnet new nunit;
  • add reference to the main project dotnet add reference ../ProjectName/ProjectName.csproj;
  • add the test project to the solution cd ..; dotnet sln add ./ProjectName.Tests/ProjectName.Tests.csproj;

VSCode extension - .NET Core Test Explorer

Retro about

What did we do well, that if we don’t discuss we might forget?

What did we learn?

What should we do differently next time?

What still puzzles us, or what do we need to learn more about?

Plan and done for Sep-18-2018

What did we do well, that if we don’t discuss we might forget?

We've moved through the plan step by step and implemented everything that was required. The progress is visible and accomplishment seems tangible.

What did we learn?

Use EJS and Express error handling.

What should we do differently next time?

Delegate more work to Danul..?

What still puzzles us, or what do we need to learn more about?

How to combine rendering on a server with rendering on user-side. I mean - how to add React for example to pages, rendered initially on a server.

Plan and done for Sep-17-2018

What did we do well, that if we don’t discuss we might forget?

Accomplished everything that was possible (except select-option tags) with just CSS. Sprites are still a pain.

What did we learn?

Practice CSS and form styling. Learned basic input validation using CSS.

What should we do differently next time?

Plan first! Then work according to the plan step by step.

What still puzzles us, or what do we need to learn more about?

As I've got we can't style option tag. Adding javascript just to deal with the element's style seems unreasonable.

Plan and done for Sep-14-2018

What did we do well, that if we don’t discuss we might forget?

It was a pleasure to work with Jeff - he grasps different concepts and ideas very fast and always ready for more adventures.

What did we learn?

Practiced promises, mentoring.

What should we do differently next time?

Work together on a bigger project?

What still puzzles us, or what do we need to learn more about?

How to conduct SQL injection on the blog (we didn't sanitize the user input).

Plan and done for Sep-13-2018

What did we do well, that if we don’t discuss we might forget?

We talked a lot. We switched not so often. Databases in conjunction with web-servers are hard to grasp in a short period of time, so my team definitely needed some additional visual explanations.

What did we learn?

Practiced to explain things in digestible parts visualizing flows between Browser-WebServer-DB.

What should we do differently next time?

Switch more often.

What still puzzles us, or what do we need to learn more about?

My team struggles with all the flows and vocabulary about requests/responses/POST/GET.