[2023] Sites
Those are the sites mosr visited –data obtained from https://takeout.google.com/?pli=1
Those are the sites mosr visited –data obtained from https://takeout.google.com/?pli=1
Layoffs in IT | https:/www.cnbc.com/2023/01/20/google-to-lay-off-12000-people-memo-from-ceo-sundar-pichai-says.html |
TypeScript 5.x | https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-3.html |
Angular v1x | https://angular.dev/ |
CHAT GPT and others | https://chat.openai.com/ |
No new VS for MAC | https://devblogs.microsoft.com/visualstudio/visual-studio-for-mac-retirement-announcement/ |
VSCODE C# DevKit | https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit |
MSFT OpenJDK21 | https://devblogs.microsoft.com/java/announcing-microsoft-build-of-openjdk-21/ |
General Motors API for Cars | https://www.theverge.com/2023/10/12/23914060/gm-uservices-api-software-apps-car-sdv |
.NET 8 | https://learn.microsoft.com/ro-ro/dotnet/core/whats-new/dotnet-8 |
Caching WebAPI : https://ignatandrei.github.io/Presentations/CachingWebAPIprez.html#1
Database2Rest: https://ignatandrei.github.io/Presentations/Database2Restprez.html#1
Polly: https://ignatandrei.github.io/Presentations/pollyprez.html#1
React: https://ignatandrei.github.io/Presentations/reactprez.html#1
SRE with .NET: https://ignatandrei.github.io/Presentations/SRE_with_NETprez.html#1
UsefullEndpoints : https://ignatandrei.github.io/Presentations/UsefullEndpointsprez.html#1
.NET
Core8: https://ignatandrei.github.io/Presentations/Net8WhatsNewprez.html#1
List of (92) Roslyn Source Code Generators with IIncrementalSourceGenerator : List of RSCG | RSCG Examples (ignatandrei.github.io)
DB2Code https://github.com/ignatandrei/queryViewer/
Port Chooser / Registration: https://github.com/ignatandrei/MicroservicesPortChooser
Roslyn Code Generators https://github.com/ignatandrei/rscg_examples
Blazor Wasm
Open Telemetry
Semantic Kernel
Meetup: https://www.meetup.com/Bucharest-A-D-C-E-S-Meetup/
Link https://docs.github.com/en/graphql/overview/explorer
query:
query ContributionGraph {
user(login: “ignatandrei”) {
contributionsCollection(
from: “2023-01-01T00:00:00+00:00”
to: “2023-12-31T00:00:00+00:00”
) {
commitContributionsByRepository(maxRepositories:100){
repository{
nameWithOwner
url
updatedAt
}
}
}
}}
Semantic Kernel / AI
Blockly Automation / Visual API
Book about Design Patterns in .NET Core
Start examples about Cloud Design Patterns with ASPIRE
video course + Book about Roslyn Code Generators
You can find those at https://ignatandrei.github.io/Presentations/
Also, finding presenters for ADCES monthly meetings – see https://www.meetup.com/Bucharest-A-D-C-E-S-Meetup/
Also, I am now speaker in https://dotnetfoundation.org/community/speakers/ignat-andrei
This is what impressed me in 2019
In 2019
For 2020 I want
Basically, the same thing as for this year.
We have 2 national banks – and we gather exchange rates from there. What if we want to add more banks -or let other programmers to add their dll’s to our software to just display the exchange rates from other banks ?
Option 1: HardCode all the list
var l = new List<IExchangeRates[]> { new GetFirstBank()), new GetSecondBank()), };
Option 2: Reading from some config file the list of classes – letting DevOps to modify the config file
var l = new List<IExchangeRates[]>; foreach(var line in File.ReadAllLines(“myListOfExchangeRates.txt”){ IExchangeRates r= Activator.CreateInstance(Type.GetType(line)) as IExchangeRates ; l.Add ( r ); }
Option 3: Reflection – in the current assembly or in all assemblies to load the classes that implements the interface to load the data
var typeToFound = typeof(IExchangeRates); Assembly a = Assembly.GetExecutingAssembly(); var types = a.GetTypes() .Where(it=>it.IsPublic) .Where(it => it.GetInterface(typeToFound.FullName)!=null) .ToArray(); foreach(var t in types) { recognizes.Add(Activator.CreateInstance(t)as IExchangeRates); }
Option4 Load as plugins
use the library from https://github.com/natemcmaster/DotNetCorePlugins/blob/master/samples/hello-world/HostApp/Program.cs and there are 2 lines , basically:
var loader = new LoadExchangeProviders("plugins"); var exchange = loader.LoadExchangeProviders().ToArray();
This post will be somewhat related to https://www.smart-jokes.org/programmer-evolution.html – but it makes total sense for me.
Let’s take what we achieved until now: We have 2 national banks – and we gather exchange rates from there. What if we want to add more banks -or let other programmers to add their dll’s to our software to just display the exchange rates from other banks ?
Let’s say now that the requirements are to to display the exchange rates for 2 national banks into a console program . The manager says that later we may add other banks to load exchange rates . I will try to explain some differences how the code is created, depending on the experience.
Junior programmer: – all the code inside
int Main(){ // code for load and display the first bank exchange rates // code for load and display the second bank exchange rates }
Internship programmer: – create classes
//create 2 classes ( first bank, second bank ) and a Load method int Main(){ var firstBank = new FirstBank(); var data = firstBank.Load(); DisplayData(data); //same for second bank }
Seasoned Programmer: – creates interfaces
//add to the 2 classes an interface , loading into a list, loading data for all the list, display int Main(){ var l = new List<IExchangeRates[]>; { new GetFirstBank()), new GetSecondBank()), }; foreach(var rates in l){ var data= rates.Load(); DisplayData(data); }
Until now, it is business as usual. But, from now on, there are many things that can be done , depending on programmer experience and will to do things ( until some error arrives and there is an official task for it) :
( if I do miss something, please put on comments)
What is my point here ? Is that I expect any programmer to go very fast to the level of Seasoned Programmer. But , after that, the knowledge of each programmer is relevant about how he does the points above ( or, if he does not …)
First battle : VBScript vs JavaScript. Both were scripting on the browser. VBScript loose because NetScape did not implement it.
Second battle: Microsoft vs Java. Starts with a Microsoft Java implementation – then C# takes over.
Third battle: MVC vs Silvelight . MVC wons – Silvelight does not work against Chrome.
Fourth battle : Desktop vs Mobile+Web – Web wins by large , And with Electron + Cordova , web wins back
Now there are
What are the battles that you observe ?
It was a good year. I have realized those open source applications
Hackhaton Team Net: https://github.com/alexandru360/WinDeskMobileSms
and I have been featured on the first page on www.asp.net
I wish you a good year on 2013!