Showing posts with label learning. Show all posts
Showing posts with label learning. Show all posts

Tuesday, January 21, 2020

Missing Pieces in My Learning for 2020

If you read my posts here, it can be seen that my main technology used is Microsoft's .Net with C#.
My main apps are WPF, with Dapper ORM/SQL, and a small module in Asp.Net core Razor pages. But I still feel I have many missing parts in my learning process. I am finding the following tutorials really interesting to pursue, and cover these areas. I started them, but didn't go through them in detail. I am glad I found these, and this is the plan for me during the first half of 2020.



A. Identity Framework for Asp.Net Core.
I did some small tutorials this far on this topic, and lately I found this one. Code Maze is the best at C# tutorials, and this is my next one on Identity:
https://code-maze.com/identity-asp-net-core-project/
I feel there are missing pieces for me in this framework, and please let me have new materials if you find some.

B. Entity Framework Core
I used EF Core in my Asp.Net web project, but I still think that there are things to be learnt here. I found Tim's newest tutorial on this, quickly checked it but didn't have time to go deeply... Another one to check more in detail.
https://www.youtube.com/watch?v=qkJ9keBmQWo

C. Asynchronous C# with Async/Await
I started using this in my Asp and WPF project, and indeed it added some responsiveness to my apps. Need to study this deeper. Any ideas on this are welcome!

D. Logging in Asp.Net Core.
I never used this in my apps, but I plan to. The greatest source for this will be my newly purchased course on Asp.Net core 3: https://code-maze.com/ultimate-aspnet-core-3-web-api/

E. Check out Blazor, especially server side, later on, this year.

F. Some more Javascript on the front-end, and then my framework of choice, Angular. I am very behind in my learning with Angular, partly because I have to work on my projects. Currently I use some JQuery tools on my Asp.net project, like datatables.js, pivotjs, chart.js, and I really like what I discovered. Any new ideas are welcome.

Wednesday, November 6, 2019

10 Things All Web Developers Should Learn

One of my Youtube Heroes, Brad Traversy Posted This:
I fully agree, and already practice some of the points he mentions:


What do you think, you should change or add in his list?

Monday, November 4, 2019

Javascript - the biggest discovery of 2019

As I mentioned earlier ,  I had the occasion this year to learn Javascript. And later a little bit of Typescript together with Angular.

This was a major breakthrough for me, because I did not know almost any of it before!



The steps of learning were the following:
1. learn syntax, basic structures
2. array, string, date functions, IIFE, arrow functions, callbacks
3. classes and objects
4. promises and Fetch function, a little bit of async/await
5. learn node.js, with express and mySql database.

Finally, I was able to build small APIs to Insert, Update, Delete etc data from a MySQL database.
This took aproximately 3 months to master, with weekly 8-10 hours as average. I kept a constant pace, solving a lot of small exercises in the beginning. As I mentioned, this was part of a code-camp called Smartware Academy, organized by a local company.

Some of the resourced I used:
Then, behavior of DOM -> very useful https://www.w3schools.com/js/js_htmldom.asp

The easy part was:
- similarity to known languages (C#)
- a lot of resources and tutorials online
- some good support from the mentors in the course

The hard part was:
- constantly using console.log to show the values of variables during execution/debugging
- DOM - new concepts and behaviour
- callback functions - really strange - and callback hell

Finally, lately I got into a little bit of Jquery/w bootstrap. Really useful, this is still ongoing for me as I want to integrate this into my Razor Pages application.

And now about Angular -  I did quite a few tutorials (maybe 30-40 in total), as I described in my blog post. And yes, I would like to deepen my Typescript experience, since this is one of the coolest trends in the Web stack. I mean, really useful, especially if you come from the C#/Java world, some concepts are borrowed to make your life easier in Javascript.


PS: Does anybody have good ideas about learning Jquery with bootstrap?

Sunday, November 3, 2019

Razor Pages - Not For Shaving!

This is absolutely fantastic! Easier to understand than MVC, and some additional features vs old .net Razor pages! Using Entity Framework Core.

What is Razor pages?
  • ASP.NET Core Razor Pages is a page-focused framework for building dynamic, data-driven web sites with clean separation of concerns. 
  • Razor Pages can make coding page-focused scenarios easier and more productive than using controllers and views.

Best tutorials, I did them all:
1. https://www.learnrazorpages.com/razor-pages/tutorial/bakery
2.  https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-2.2&tabs=visual-studio
3. https://kenhaggerty.com/
4. https://www.codeproject.com/Articles/1263791/ASP-NET-Core-Razor-Pages-Using-EntityFramework-Cor
5.https://www.youtube.com/watch?v=vh0UqlnM0Jw

Currently I build a small project, using EF core, which connects to an Azure database.It has aprox 15 pages, and uses a lot of Linq expressions.
Guys, did any of you have contact with this technology?
Do you have any tips?

What about .NET Core? My new target.

During September 2019, I have been awarded a second bigger project.
It is an invoicing software, which collects various costs for employees (compensation/salary, management fees, depreciation of equipment, administration cost, miscellaneous costs) and generates a recharge invoice for their respective clients. It is a Shared Service Recharge Invoicing system.

Tools used:
- WPF and MVVM with .NET (C#).
- MS SQL for database
- Dapper as ORM
- .NET Core Razor pages (.net core 2.2) for a special manager module, for manager being able to review their employees invoices 
- bootstrap as default css system for Asp.net web pages
- some jquery

For Razor pages, I needed to learn following technologies:
1. EF Core - best, and really SIMPLE, useful resource I found: https://code-maze.com/entity-framework-core-series/
2. .NET core with razor pages. Excellent resources:
I really like Razor pages, and I will write a separate blog entry for this topic, elaborating a bit more on this. Until now, I really like it, and started to progress really well during the past days.
PS: Razor Pages are now the default in the Web App category/Visual Studio!


Angular? This is real tutorial hell. (but it's worth it)

During the summer of last year, one of my friends I used to go swimming together, mentioned he recommends Angular to me if I want to learn programming seriously.

What an idea...

In February 2019 I started to study Angular and do lots of tutorials. Besides my course and big project which was finalized in summer of 2019, I studied this Javascript framework.

Imagine, I started doing Angular tutorials, and parallelly learned Javascript (ECMA 2015).
My main source of angular tutorials:
- https://angular.io/tutorial
- lots of smaller, simple tutorials : https://javabrains.io/courses/angular_basics/
- later on angular+firestore: https://fireship.io/
- some angular + material tutorials

It took me about 6 months, with weekly 1-2 tutorials, some of which have been quite superficial, copy paste etc. That's tutorial hell! I think now I am the best at faking angular tutorials... I became MEAN in the meanwhile, going through this hell.

Imagine my frustration in the beginning trying to use Web-API for back-end... from .net core and node.js... but that's a different story, maybe for another blog post.

But, around June 2019, I succeeded with some nice applications, one of which I can show below:

https://songlist-varad.firebaseapp.com/



To be honest, it is a replica of an existing tutorial, tailored to my needs:
https://angular-templates.io/tutorials/about/angular-crud-with-firebase

In spite of all odds, this Angular hell has some value. It was hard, steep learning curve. But now I know I don't have to be stopped by new technologies or complex code. Everything has to be taken slowly, maybe only 20 min of focused learning per day. Excellent source was : fireship.io.

This HELL - is worth it!!

Journey to Web Programming

After my big project began to finalize, I decided to quit my day job as controller.  In the meantime I had the opportunity to participate in an intensive Web-Development class locally, organized by a local Software Company.

https://www.smartware-academy.ro/

Lessons learned during the 12 week course were:
  • html with css (for me css was quite new!!)
  • Javascript, basics, classes, algorithms
  • Node.js with MySQL for back-end
  • we constructed a Note-manager, a small application similar to a mini-blog, called Smart Notes
This was an excellent opportunity! I learned JS here from scratch - really focusing on technique and self-discipline. I took all the steps slowly but steadily, almost every day exercising, doing challenges etc.

Node.js is fantastic for creating fast back-end projects. We used simple node.js web-apis to get and post data to the mysql database (notes, users, pictures).

Tools used:
- Cloud 9
- VS Code
- no CSS framework
- html and css written in "notepad" style
- NodeJS with express.s


This journey lead me to deepen my interest to web-programming, the MEAN stack in special.
 
I did this course while finalizing my big project, mentioned in my first two posts. I do think I added a lot to my C# knowledge, and I recognize Javascript is the biggest discovery for me in 2019!

My first big project (.NET) - and technologies used.



In the summer of 2017, together with my former finance manager, I began to design an internal recharge system for the company.
The choice was WPF for Windows (https://docs.microsoft.com/en-us/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application) using the old .NET, and an MS SQL Database.

We began to learn, exercise and think about the tools to use:
Our inspiration was: https://www.iamtimcorey.com/
1. IDE: Visual Studio Community 2017
2. WPF - for the visual part, front-end
3. ORM - Dapper - I think this is the best discovery ever! Tim speaks about this in his Videos.
https://www.iamtimcorey.com/blog/137806/entity-framework 

Please, check out his videos, about SQL, C# and lots of serious tutorials and courses.
 (https://stackexchange.github.io/Dapper/)
See also: https://dapper-tutorial.net/
4. MS SQL - I needed to review my SQL knowledge. Did a lot of exercises, and build many stored procedures for the application - dapper maps the entities to the data returned by those stored procedures, and I also used SP to insert and update entity data. Even if this was very time consuming in the beginning, proves to be very efficient and goal oriented.
5. lots of company data about expenses and the algorithm to create allocation keys - business logic designed together with Finance Manager.

The journey was hard. It took me probably 1 year to really get some speed, and show something to my Finance Manager colleague.

Luckily, I had my finance background, to understand the process we tried to automate, as there was a working excel macro/formula model as well used before the application.

But, I needed to fix my knowledge of C# (also using MVVM the first time for WPF) and SQL/Dapper. This meant weekly 2-3 hours of coding for 1 year to get some traction.
Main source for C# was google and Tim Corey, and my big discoveries were:
  • lists/collections of items 
  • LINQ and the foreach 
  • breaking down the tasks to smaller chunks and functions
  • writing a services class to export lists to excel using OpenXML
  • first steps in async/await

A special challenge was how to integrate the good old WinForm control ReportViewer into WPF and MVVM. I will detail these maybe in another blog post.