/cslabs

Training/scratchpad repo

Primary LanguageC#

cslabs: Competence improvement project C#/SF

Introduction

This is a collection of small pieces of work used for training and competence improvement for skills needed for Microsoft's cloud-based micro-services technology called ServiceFabric.

It's very technology biased towards certain areas, as Microsoft being what they are. Hence the focus upon Tools & technology used by the "trade" enterprise-IT (C#, VisualStudio, .NET) and whatever follows in it's back-waters.

How and what

Project is heavily based on learning by doing in lab- or tutorial-form.

As I'm senior (since 1987 as professional and yet some years as student and passionate nobbiest), I firmly believe having seen and done most things worth doing. I'm skipping books and other formal training where I can nowadays. (Actually come to think of it, I always have as I started very young and curious in a computer era where knowledge was scarce. I'm i.e. in most parts an autodidact)

Formal books and training are in many cases too slow, especially when it mainly regards catching-up. This way I can use my experience and previous knowledges and fill-up the gaps. Hopefully this way will be faster. However, I still need to keep very focused. I.e. one skill at a time is targeted or the out-come will be only fluff and a waste of time. My way (TM) may not be for everyone.

(Truth be told, I'm also quite prejudiced against especially Microsoft training. It's often way too bloated, yet discuised in a seemingly academic fashion.)

I like documenting what I do and am a firm believer of openness having spent many years in the service of Open-/Free-Source. Quality, facts, science are my personal guiding-stars (or as I like to see it, just plain and simple truth).

But best practice will do in the absence of other...

As this project is primarily for my own needs, documentation may be quite thin here-and-there. You are of-course welcome to contribute with comments. This is however not and never will be a product focused project.

Further project documentation


Fluff

More reading for the analytically minded follows:

I learned OOP very (Object Pascal & C++) and eventually got quite skilled in C++ but abandoned it some 5-10 years down my professional career. Basically for the same reasons as Linus Torvald's: It's hard to become any good at something of you focus on anything.

Also: "If C is like giving a man a rifle, C++ is like giving a child bazooka."

However far as OOP go, C# is quite decent. In some other IT shape-up projects, I re-write some old code from memory and it turns out that I'm on average 8-times faster writing the same code in C# (which I know almost nothing about), than in C++. As the code was originally written in C++ I find this quite remarkable. It ethers says something about C++ or C#, I'm not sure which yet...

(Relevant) background skills

This project is my personal training study and training playground. It doesn't really reflect who I am nor my overall competence, rather what is needed to be up and running for the trade mentioned above, i.e. Microsoft cloud-based enterprise-IT.

That being said: If you have a similar back-ground, this project may be of some interest to you too.

Project is very targeted and narrow filling very personal white-/gray-spots in my competence-map. Here's an overview of where I stood starting which may be of help when following my work (i.e. what I skip and what I emphasize on).

  • Deeply Embedded (micros & HW, i.e. silicon level)
  • Mildly Embedded (for example: phones WRT middleware and system)
  • Operating systems technology (I.e. actually doing it, not only using it)
    • Kernels (from bare-on-the-silicon to Linux)
    • Device drivers (for all the above)
  • Real-Time: from kernel-implementation to application
  • System engineering (for all the above)
  • From way back: C++ and OOP (very way back)
  • Formally very biased towards UNIX-based tools & UNIX traditional way of work.

Other projects of mine in a similar spirit

Other on-going projects in a similar spirit targeting the same as this technologies but with somewhat more serious and targeted and where end-result is actually supposed to do something.

  • Polygons in C# - Linear Algebra transformation and projection of graphical entities. (NOTE: This is not a 3D rendering-engine. Even if finished it will be something completely different.)

  • Polygons in C++ Transparency/portability focused - Shadow-project of the above with emphasis on doing it the right way (i.e. UNIX tradition). Build-environment is CMake to cover everything including the odd-bird in the gang: Windows.

  • Polygons in C++ (Visual Studio) - Ditto but exclusively using Visual Studio with all it's whistles and pipes and productivity boosting (TM) helpers.

  • Polygons in C++ (Visual Studio) - Ditto but .NET based Microsoft's CLI interchangeability (In plan, not started yet)

About the author