Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Nick Polyak
Ben and Nick Polyak
Secure transaction. Cancel anytime. Have an account? Log In Account processing issue - the email address may already exist User information Username (Optional) This is the name that will be displayed next to your photo for comments, blog posts, and more. Choose wisely! * First name * Last name * Email Address Your email address will be used to confirm your account. We won't share it with anyone else. * Password Create a password that only you will remember.
Introduction to Dynamic Data
DynamicData allows monitoring source collections and updating target collection in such a way that the updated collections satisfy certain conditions specified by the DynamicData operators. The great feature of DynamicData is that the target collections pick up the source collection inserts, removes and updates and arrange the corresponding changes in the target collections to satisfy the same conditions.
Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink.
#codeproject #csharp #avalonia #dynamicdata For many years (more that a decade) codeproject.com used to be my home for publishing software architecture and development related articles. Now since codeproject is unfortunately unavailable (hopefully only temporarily) I plan to make Dev.To to be my software blog home possibly with mirrors at other software blog hosting web sites. Read next Jonas Scholz - Jan 22 Juraj - Jan 23 We're a place where coders share, stay up-to-date and grow their careers.
C# in Browser via WebAssembly (without Blazor)
Introduction C# programs (as well as programs written in many other software languages) can now be run in almost any browser via WebAssembly - Wasm for short. On top of being written in better languages, WebAssembly programs usually run faster than JavaScript/TypeScript programs, because they are compiled (at least to the intermediary language, some are even compiled to the native machine assembly language).
gRPC, .NET 8.0 and Kestrel in Easy Samples
Dedication This dedication is my farewell present to my good friends at Kahua.com including Colin Whitlock - who on top of being a great CTO, is also a great manager, architect and developer in the company. Jon Sinsel - an extremely sharp C# guru who very patiently introduced me to Uno Platform and Kahua code. Adam Love - the best Web, Mobile wizard (also a great C# developer) without whose help, I'd still be figuring out things about deploying ASP.NET application.
Multiplatform Miracle Package: Avalonia. Comparing Multiplatform XAML/C# Packages: Avalonia vs WinUI based Solutions
Source Code: Comparing Multiplatform Avalonia and WinUI Frameworks Samples Disclaimer In this article I present only my personal point of view. Avalonia 11 - New Powerful Multiplatform Package In recent years software application companies came under pressure from their customers to provide not only Desktop but also Web and Mobile solutions containing most or all of the desktop functionality.
Embedding Python Applications within Gidon C# Plugin Framework
Python is a great language for individual scientists. For developing large applications, C# or other strongly typed languages are better. The article demonstrates how to implant Python plots within a C# plugin framework. Introduction Python Advantages Recently I've been working a lot with Python. My opinion is that Python is a great language for individual scientist and developers.
Publish/Subscribe gRCP Relay Server with Separation of Concerns
Introduction Relay Server Relay server passes messages between the publishing and subscribed clients. The message itself is not changed by the server - only channeled from a publishing client to a set of subscribed clients. A simple relay server (and clients) are described in Simple Relay gRPC Examples.
gRPC in Easy Samples for C#, JavaScript and Python
Introduction Benefits of gRPC Microsoft all but discontinued WCF by not including its code into .NET CORE. The best and most popular remaining solution for remote communications between different processes possibly running on different machines is gRPC or Google Remote Procedure Calls.
Creating and Installing Plugins as Nuget Packages
This article show that it is possible to create and install the dynamically loaded plugins as nuget packages. This allows the consumers of the plugins to install the plugins almost without any extra plugin installation related code - simply as nuget packages.
Generic Minimal Inversion-of-Control/Dependency Injection Interfaces implemented by the Refactored NP.IoCy and AutofacAdapter Containers
This article explains Inversion of Control, its benefits and possible pitfalls. It talks about current popular IoC frameworks. I propose a minimal but IoC powerful interface allowing to build a very simple IoC container which yet will provide all the features needed for the separation of concerns and replacing parts of the functionality easily. I also present two frameworks that implement those interfaces - very compact and simple NP.IoCy and AutofacAdapter built around Autofac.
Embedding Native (Windows and Linux) Views/Controls/Applications into Avalonia Applications in Easy Samples
This article describes embedding native Windows and Linux controls and views into an Avalonia application. This is important e.g. if one needs to port a native application to multiplatform Avalonia or if one does not have some complex Avalonia controls that had been built natively. I also present the best architecture for using native views within Avalonia via an IoC container and dynamic loading.
Embedding Native Views/Controls/Applications into Avalonia Applications in Easy Samples
This article describes embedding native Windows and Linux controls and views into an Avalonia application. This is important e.g. if one needs to port a native application to multiplatform Avalonia or if one does not have some complex Avalonia controls that had been built natively. I also present the best architecture for using native views within Avalonia via an IoC container and dynamic loading.
C# Linq Expressions in Easy Samples
This article explains Linq Expression programming by providing simple examples, making it easies to switch the context from C# to Expression programming when needed. One of the most useful and at the same time poorly documented C# built-in libraries is System.Linq.Expressions.
Running and Debugging Multiplatform .NET (.NET Core, .NET5 and .NET6) GUI and Console Applications on Windows Subsystem for Linux (WSL)
This article details how to use the very powerful combination of .NET and Avalonia together with WSL for the purpose of debugging Linux .NET applications while they are being developed within Visual Studio 2022 on Windows. What this Article is About .NET Standard, CORE .NET5 and .NET6 made .NET multiplatform (aside from the GUI programs). Avalonia filled the gap allowing multiplatform GUI programs to also be developed in .NET.
Running and Debugging Multiplatform .NET Core (.NET5 or .NET6) GUI and Console Applications on Windows Subsystem for Linux (WSL)
This article details how to use the very powerful combination of .NET and Avalonia together with WSL for the purpose of debugging Linux .NET core applications while they are being developed within Visual Studio 2022 on Windows. .NET Standard, CORE .NET5 and .NET6 made .NET multiplatform (aside from the GUI programs). Avalonia filled the gap allowing multiplatform GUI programs to also be developed in .NET.
Avalonia DataGrid - Advanced Features coming from NP.Avalonia.Visuals Package
Avalonia is a great and powerful tool for desktop applications development, but, at this point does not have some complex controls. For example its DataGrid misses filtering, grouping, layout saving/restoring and other column manipulation functionality. This article describes the code shipped as NP.Avalonia.Visuals open source library/package that provides all the missing functionality except for the grouping.
Gidon - Avalonia based MVVM Plugin IoC Container
This article describes Gidon - the first IoC/MVVM framework created for Avalonia. I explain and give samples of best MVVM/IoC practices and show how you can use Gidon to create an application as a set of many, independent plugins. Gidon IoC/MVVM Framework for Avalonia In this article I present a new Gidon IoC/MVVM framework being built for a great multiplatform WPF-like package Avalonia on top of my own IoCy inversion-of-control/dependency-injection container.
Prototype Driven Development (PDD)
Prototype Driven Development (PDD) is a new way of creating quality software fast. It can be applied to building any software, but is especially useful for UI development. In this article I explain PDD, talk about its advantages and present a detailed example showing how to build and refactor a simple UI Control using PDD.
Test Driven Development Process with XUnit
This article explains Test Driven Development with a detailed sample showing how to create, refactor and build tests for a new feature and also how to polish and find bugs in the original implementation using the tests. I also talk about advantages and shortcomings of the unit tests and the fact that every project should decide for itself how many unit tests to write and how often to run them.
Behavior Pattern - Visual Behaviors in WPF and Avalonia with Practical Samples
Behavior is a relatively new software pattern allowing to modify an object's behavior non-invasively - without modifying the object's code. The attached properties used in WPF and Avalonia can be utilized for creating static behaviors on visual object. This article shows how to create such static behaviors for visual objects and how to use them. Download the samples What is Behavior Pattern?
Useful Generic Avalonia Controls located within NP.Avalonia.Visuals package
This article describes several simple but very useful generic Avalonia controls CustomWindow, AutoGrid and LabeledControl located in NP.Avalonia.Visuals open source library. NP.Avalonia.Visuals is also available as a nuget package. Download the samples Avalonia is a great new multiplatform .NET framework for building UI desktop applications a very similar to WPF, more powerful and less buggy and also running not only on Windows, but also on Linux and Mac.
Basics of XAML in Easy Samples for Multiplatform Avalonia .NET Framework
In this article, I present a simple tutorial for Avalonia XAML providing easy to understand samples. It covers important topics concerning using XAML for representing classes and properties, XAML namespace, simple markup extensions, XAML resource and using XAML for non-visual projects. Download the samples Introduction This article is the third instalment of Avalonia articles following Multiplatform UI Coding with AvaloniaUI in Easy Samples.
Theming and Localization functionality for Multiplaform Avalonia UI Framework
Download the samples Localization, Internationalization and Theming Years ago I came accross a great package for localizing/internationalizing WPF applications. I successfully used it to enable a WPF application that I had built to switch between English and German versions. This package for WPF had been developed by Tomer Shamam and since then was removed from his former blog. He sent the code to me and with his kind permission I published it in Github WPFLocalizationPackage repository.
Multiplatform Avalonia .NET Framework Programming Advanced Concepts in Easy Samples
The purpose of this article is to continue explaining advanced Avalonia concepts using simple coding samples. In particular the following topics are covered: Routed Events, Avalonia Commands, Avalonia User Controls, Avalonia Custom Controls, Data Templates and View Models. Download the samples This article can be considered as the forth installment in the following sequence of articles: Multiplatform UI Coding with AvaloniaUI in Easy Samples.
UniDock - A New Multiplatform UI Docking Framework. UniDock Power Features.
UniDock is a powerful Avalonia based multiplatform UI docking framework. This article describes its newly added powerful features that should make it very attractive to the developers. Download source code for demos Download source code for the UniDock Framework Introduction About UniDock In UniDock - New Multiplatform Docking Framework (Introduction), I introduced a new multiplatform docking framework - UniDock built on top of Avalonia package for visual development.
UniDock - A New Multiplatform Docking Framework. UniDock Power Features.
UniDock is a powerful Avalonia based multiplatform docking framework. This article describes its newly added powerful features that should make it very attractive to developers. Download source code for demos Download source code for the UniDock Framework Introduction About UniDock In UniDock - New Multiplatform Docking Framework (Introduction), I introduced a new multiplatform docking framework - UniDock built on top of Avalonia package for visual development.
Multiplatform Avalonia .NET Framework Programming Basic Concepts in Easy Samples
AvaloniaUI is a powerful new open source cross-platform package for UI development similar, but in many respect more powerful than WPF. This article explains AvaloniaUI most important concepts and provides a hands on tutorial for them. Download the samples Introduction This article can be considered as the second part of Multiplatform UI Coding with AvaloniaUI in Easy Samples.
Multiplatform UI Coding with AvaloniaUI in Easy Samples. Part 1 - AvaloniaUI Building Blocks
AvaloniaUI is a new open source package which closely resembles WPF, in many respects more powerful than WPF and (unlike WPF or UWP) works on any platform - Windows, Linux and MAC (and I tested it myself on each of those platforms). AvaloniaUI also works on the mobile platforms - iOS and Android (I have not tested AvaloniaUI on the mobile platforms yet, so I rely on Avalonia documentation).
The Unfinished Leader: A School Leadership Framework for Growth & Development with Dr. Michael Lubelfeld, Dr. Nick Polyak, and Dr. PJ Capsey | Transformative Principal | Episode 414
Show Notes Michael Lubelfeld, Ed.D., currently serves as the superintendent of schools in the North Shore School District 112 in Highland Park, Illinois, a northern suburb of Chicago. Mike earned his doctorate in curriculum and instruction from Loyola University of Chicago, where his published dissertation was on effective instruction in middle school social studies.
Programming on Trees
Introduction In this article I present some very general programming concepts I came up with long ago, but have not implemented yet. I hope that, perhaps, the interest will be sufficient to motivate me to work on them. Partially, these ideas were implemented in WPF, Xamarin, Angular and React but they go beyond what those three frameworks offer. Even though these paradigms are related to visual programming, they can also be applied to non-visual programming as will be explained below.
WPF Drag and Drop using NP.Visuals Library
Please Sign up or sign in to vote. What this Article is about I am building several librararies that can help C# and WPF developers. The libraries are fully open source, availabe on GITHUB and also as NuGet packages. In this article I am going to describe the drag and drop functionality available as part of NP.Visuals. NP.Visuals contains basic generic visual utilities, converters, behaviors and controls that can be of great help for WPF developers.
Concern Oriented Programming (COP)
New programming paradigm involving combining various small pieces of functionality together Please Sign up or sign in to vote. Imagine that you have a number of software building blocks and you can put those blocks together with minimal or no customization and they will work. This is an aim that every software package aims to solve but very rarely if ever do and this is what Concern Oriented Programming does.
Introducing IoCy - Simple and Powerful IoC Container
Download NP.IoCy.zip - 76 KB Introduction Why I Am Writing this Article Throughout my life, I dealt with many various IoC containers, including MEF, Unity, AutoFac and Castle Dynamic Proxy. Also, I did some research on Ninject. I saw instances where containers were used without resolving any problems - they were used because the architects of the project could not imagine building projects without IoC.
New Roxy Features allowing to Choose Interface Implementation Automatically
describes new important Roxy features for mapping the interface and its implementation wrapper. Please Sign up or sign in to vote. Recently I introduced Roxy run-time proxy code generator and (would be IoC Container). In particular, here are several articles on Roxy As I demonstrate in the above articles (especially the one listed first) Roxy is great for separating concerns in classes that need multiple concerns.
Software Design Principles and Patterns in Pictures
Please Sign up or sign in to vote. I try to explain some design patterns and principles using analogues and pictures from non-software world. The purpose of this article is to explain the programming concepts and patterns using pictures. When thinking about software or mathematical abstractions it always helps to map the abstraction into something else, something that can be imagined or drawn. They say better one time to see, than ten times to hear.
Roxy: Strong Types and Method Overloading
Please Sign up or sign in to vote. I introduced Roxy as a Proxy Generation and (in the near future also) and IoC Container in Introducing Roxy: Powerful Proxy Generation and IoC Container Package and Separation of Concerns and Smart Mixins with the help of Roxy IoC Container and Code Generator. Name Roxy is derived from two words - Roslyn (the new MS compiler as a service package) and Proxy.
Software Project Development and Decision Making
What this Article is About It is important for people involved in project decisions to be aware of the consequences their decisions have on the project's success and cost in terms of time and money. For 20+ years of my software development experience and 10+ years of consulting, I participated as an architect or a developer in many projects - most of them successful, some failing, but every project (whether successful or not) involved good and bad decisions made by various people.
Separation of Concerns and Smart Mixins with the help of Roxy IoC Container and Code Generator
Separation of Concerns and Smart Mixins with the help of Roxy IoC Container and Code Generator Achieving separation of concerns using Roxy IoC Container and Code Generator. In software engineering a concern is something that is responsible for a single 'side' of the functionality. I plan to give concrete coding examples of separate concerns later in this article, but for now, let us have a purely verbal discussion (without looking at the code).
Introducing Roxy: Powerful Proxy Generation and IoC Container Package
Roxy is a powerful new Roslyn based proxy generation packages that facilitates separation of concerns, creating adaptors and smart mixins. The name of the package "Roxy" is a mix of two words: "Roslyn" and "Proxy" (even though I intend to make this package much more than a just a proxy generator). Why and What is Roxy The main purpose of Roxy is to introduce a better separation of concerns and correspondingly simplify the code.
TypeScript for Object Oriented Developers in Easy Samples Part 1
As Microsoft turned towards JavaScript for web programming, they, under great Anders Hejlsberg, decided to create an object oriented language that would compile to Java Script and would bring some order to the chaotic world of Java Script programming. Syntatically, TypeScript is very similar to JavaScript. In fact, JavaScript programs would run within TypeScript without any change. However, TypeScript allows to bring the Web programming into the realm of the Object Oriented Development.
Collection Behaviors
I describe reusable implementation of the collection behaviors that make items behave in certain way as long as the items belong to a collection. Behaviors as a pattern were first introduce for WPF by MS Expression Blend team (at least according to my knowledge). (at least according to my knowledge)In spite of this, the behaviors do not have to have anything to do with the visuals. In fact I gave several examples of the non-visual behaviors in some of my previous articles.
Implementing Custom XAML Intellisense VS2017 Extension
Visual Studio 2017 finally allowed filtering suggested intellisense completions by their types (property, method, event etc) in C#, however, the same was not provided for XAML. I work a lot with XAML and always liked the ability to narrow down the completion results to a certain type - I had to use custom extensions by Karl Shiflett and Bnaya Eshet to achieve that for the previous versions of Visual Studio.
Using Roslyn for Compiling Code into Separate Net Modules and Assembling them into a Dynamic Library
Using Roslyn for Compiling Code into Separate Net Modules and Assembling them into a Dynamic Library The article explains in detail how to dynamically compile and assemble various code snippets into a dynamic assembly. Also it describes loading and using the dynamic assembly within the application. MS Roslyn is a great tool, though pretty new and not well documented with few examples available on the internet. It is to fill this documentation/sample gap that I decided to write this article.
WPF Fundamental Concepts in Easy Samples Part 2 MultiBindings, ControlTemplates, Styles
WPF is an extremely powerful UI development package. Part of the reason for its power is that WPF architects came up with completely new concepts that give software development a new dimension. These concepts are not used outside of WPF and many people switching to programming WPF from other languages and packages might have difficulty understanding them in the beginning. The purpose of this series of articles is to teach these concepts and demonstrate their usage via very simple C#/WPF samples.
WPF Fundamental Concepts in Easy Samples Part 1: Dependency Properties, Attached Properties and Bindings
WPF is an extremely powerful UI development package. Part of the reason for it power is that WPF architects came up with completely new concepts that give software development a new dimension. These concepts are not used outside of WPF and many people switching to programming WPF from other languages and packages might have difficulty understanding them in the beginning. The purpose of this article is to teach these concepts and demonstrate their usage via very simple C#/WPF samples.
WPF Lookless Controls
I work for a company that started using WPF relatively recently. As a result, a lot of software engineers are switching to programming C# WPF from other platforms and languages. The easiest and most intuitive way of creating a re-usable visual control in WPF is by utilizing the built in VS2015 template for . The purpose of this article to show that Lookless or Custom controls are actually a better choice than s.
WPF-less Collection Bindings and Two Way Bindings
As I wrote before, WPF (Windows Presentation Foundation) introduced a number of new programming paradigms which make it possible to create an architecture with great reuse and separation of concerns and which can be used outside of WPF for purely non-visual projects and by non .NET languages. I argue that in terms of developing the theory of programming, the WPF concepts were a qualitative step forward compared only to introduction of OOP concepts.
Generic (Non-WPF) Trees and REvents Propagating on the Generic Trees
WPF (Windows Presentation Foundation) introduced a number of very interesting concepts which, from my point of view, are bigger than WPF itself and can be used in non-visual programming and even non .NET languages, e.g. Java or JavaScript. I strongly believe, that WPF paradigms are a qualitative leap in programming theory comparable in magnitude to the OOP breakthroughs after decades of procedural programming.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Nick
Contact Nick, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack