Today we have released an installer for our FOX subscribers only for XSharp Cahors 2.13.2.2 which contains some fixes for problems reported with X# 2.13, and some new features.

The what's new document describing all the changes can be found here:

{rsfiles path="fox/Compiler/XSharpSetupFox2.13.2.2.zip"}

A public release is planned for next week.
 

List of Speakers and Sessions


There will be 3 tracks at the event:

  • Migration from Visual Objects (VO)
  • Migration from Visual FoxPro (VFP)
  • General topics

The sessions for the VO track and VFP track will be done in parallel in 2 separate rooms.
The general sessions will be done in the main session room.

Speaker

Session(s)

Track

Peter Monadjemi

Asynchronous programming with X#

General

Wolfgang Riedman

 Gui Choices for VO Programmers

VO

Andrej Terkaj

Building MAUI applications with Blazor and X# in the backend.

General

Stefan Hirsch

Web Applications with X# Backend and VueJS Frontend

General

Fabrice Foray

Introduction to Visual Studio
Migrating Visual FoxPro apps to .Net with X#

General
VFP

Nikos Kokkalis

The evolution of X# core.
Fun things to do (with dotNET) on a rainy day

General
General

Chris Pyrgas

Migrating Visual Objects Apps to .Net with X# (with Robert)

VO

Robert van der Hulst

Migrating Visual Objects Apps to .Net with X# (with Chris)
Introduction to the X# SQL RDD
Creating apps for the Web and Mobile using Blazor and FoxPro

VO
General
VFP

XSharp Devteam

Opening Session
Closing Session

General
General

 

Preliminary Conference Schedule

Click here for more information about the location and costs

 

Fabrice Foray Track Summary
Introduction to Visual Studio General - First use from the VO Repo-based perspective
- Editor, Settings, jump to code and more (XMLDoc, Hints, Parameters, ...)
- References and NuGet
- Using Git as Version control
- Extensions add
Migrating Visual FoxPro apps to .Net with X# VFP - Compare VFP and X#, from a VO-based developer point-of-view ;)
- First use of the VFP Xporter : How it works, Settings, What you can expect
- Common troubles, Third parties
- Make your way in your new code
Stefan Hirsch    
Web Applications with X# Backend and VueJS Frontend General First I will show our complete product with its current development state.
Then we will look into the backend part and go through the whole workflow. Starting with configuring
the server, loading plugins, loading scripts, adding routes, starting the server. After the server startup
we look into the request handling that can be done in a plugin or by an X# script. Here we will have a
look into scripting, how we merge scripts, call them with parameters and get return values. After that
we will build a little demo project that can host a web site and can handle some GETs and POSTs for data
fetching and data putting.
In the second part we will focus on the frontend part. We will have a look into the structure of our vue
application, with all the components, store, helper functions, how we handle plugins and the build
process. Then we will start building a demo project from scratch using VisualStudioCode. Vuejs and
vuetify will be used as our frameworks. We will build a simple frontend with some data fetching and
data putting.

Frameworks:
- Grapevine (REST-server engine) https://github.com/scottoffen/grapevine-legacy
- NewtonSoft.Json (Json data handling) https://github.com/JamesNK/Newtonsoft.Json.git
Compiler: X#
IDE: XIDE

     
Nikos Kokkalis    
The evolution of X# core General A lot of effort is devoted to the various dialects, but I think it's nice to have a session about X# core. Maybe talk about integrating new C# features, or come up with something new. And perhaps showcase some work-in-progress?
Fun things to do (with dotNET) on a rainy day General This will be about some advanced topics. May include some things on multithreading, async, performance optimizations, but will also talk about things internal to dotNET and the CLR.
Peter Monadjemi    
Asynchronous programming with X# General "The world is asynchronous"
In this presentation, Peter will show examples for using the keywords async and await and the underlying task class with Winforms applications. Both keywords are probably still new for the majority of the X# developers. He will also point out a few of the base library classes with asynchronous methods based on tasks.
Using asynchronous technique leads to user interfaces that are more responsive, don't freeze that often, and to applications with a better overall performance.
Although for WinForms application there are simpler alternatives like the BackgroundWorker class, when it comes to mobile applications using async and await becomes obligatory (maybe I can present an C# or X# example that uses .Net 8 and MAUI).
     
Chris Pyrgas    
Migrating Visual Objects Apps to .Net with X#, Part 1 & Part 2 (with Robert) VO This session will show how to migrate Visual Objects applications to .Net with X#. It will cover:
- The VOXporter and the options available for migrating your apps
- Using the converted application in XIDE  (Chris)
- Using the converted application in Visual Studio (Robert)
- Common problems found when converting applications from VO

Please note that the contents of this session is VERY flexible. When there are only "experienced" X# attendees, we can change this session into a tips and tricks session targeted at VO developers.
     
Wolfgang Riedmann    
Gui Choices for VO Programmers VO You have VO applications, maybe some of them ported to X# and would like to build new applications in X# and you don’t know what type of GUI to use?

This session cannot give an answer, but can give you some oversights over the choices you have and gives you a sample application for every type shown.

Starting from a simple VO application based on DBF tables you will see possibile developments from a simple migration to a WPF application.

     
Andrej Terkaj    
Building MAUI applications with Blazor and X# in the backend. General Andrej will show the way to use X# in apps that will look much fresher to the younger generations than the established windows forms GUI.  We will step into .NET 7 with X# Core dialect. We will also get an insight into modern environments where different programming languages can be mixed (X#, C#, CSS, HTML and JavaScript).

Furthermore, we'll learn what's behind the word MAUI and whether we can use X# to build apps for Android, iOS, Windows and Mac Catalyst operating systems.  We will build a simple application that will be installed on a smartphone and that will allow to edit data from a MySQL database on a remote server. We will also learn how to create web services and how to do CRUD operations on data so retrieved.

     
Robert van der Hulst    
Introduction to the X# SQL RDD General There were many requests from the VO community to add an RDD to X# that you can use to access data from SQL database. This RDD, so is the idea, could be used to replace ADS (Advantage Database Server), since SAP is no longer actively supporting this product.
In this session Robert will show the upcoming SQL RDD for X#. This RDD will allow you to:

- Select data in "Query Mode" with a select statement

   DbServer{"Select * from Customers"}
   USE "Select * from Customers"


- Select data in "Table Mode"

   DbServer{"Customers"}
   USE Customers

In Query mode, the RDD will fetch all the data from the server into a read only local cursor. You can use normal Xbase filtering on that result set and also create local indexes.

In Table mode, the RDD will build select statements to fetch the data from the database. By default, it will not fetch all rows (you do not want to fetch a million rows from a server) but will limit the # of returned rows. Through a callback mechanism, you can control the behavior of the RDD.

The RDD is not written for a specific SQL backend. Syntax differences between various backends are handled with a special layer, where for example the syntax is defined to limit the # of rows (SELECT TOP for SQL Server, LIMIT for MySql, using ROWNUM in Oracle etc.)

In this session, Robert will demonstrate the new RDD and will show and discuss the design.

Creating apps for the Web and Mobile using Blazor and FoxPro VFP In 2022, Microsoft introduced a new style of developing applications for the Web, as well as for mobile devices, using a product called Blazor. Blazor apps can run on any web browser using a technology called WebAssembly, server-side in ASP.NET Core, or in native client apps. Blazor front ends are usually coded with a mixture of Razor and C#. However, Blazor apps can also call code developed in other .NET languages, such as FoxPro code, compiled for .NET with X#.

There is A LOT of learning material about Blazor on the web already. This session will present an overview and will explain the differences between server side apps (running in ASP.NET Core) and Blazor WebAssembly apps.

We will also show how you can run FoxPro code in an XSharp layer behind the Blazor apps to use existing business logic for new applications. This code will be running from a web server. This means that some things are allowed, but other things not. We will look at some issues you can expect.

We will also look forward to a new version of Blazor that has been announced (Blazor United). This new version can be seen as a mix between Blazor Server and Blazor Client, where some components are running on the server, but other components are running on the client.

You will learn:

  • What Blazor is
  • The difference between Blazor Server and Blazor Web Assembly
  • How to call FoxPro code from a Blazor application
  • What can you do in the code behind the Blazor app and what you can't
  • What is coming with respect to Blazor in the not-too-far future

Opening Session & Closing Session

General  
     

Various customers

   

Application Show

General During this session, various customers will demonstrate the programs that they created with X# and explain some of the decisions that they have made during the migration process.

 

Fabrice Foray Summary
Git for Dummies Maybe you are not using a Version Control System, or you are using one but not Git.
We will discover the basis of Git usage, as a single user or as a team.
We will explore how you can use it with your local hard drive, on your own LAN server or on the web.
VFP Migration Even if XSharp and VFP belongs to the same xBase family, it can be a great challenge to port an application from VFP to XSharp.
We will see how different the operating principles are, specifically regarding GUI, but also the solutions that XSharp is providing.
Furthermore, we will see how the VFPXPorter can help you to start your migration.
X# notebooks This (freak night) session demonstrates how you can combine code and tutorials in markdown files.
A Notebook is a file with cells, and each cell can be of different types : Notebooks were originally a Python thing, mostly used by universities.
A cell can contain text in Markdown format with instructions and help, or some code in a specific language, XSharp now, that you will need to test and amend to your needs.
Microsoft has decided to provide a .NET-way to use these, and now we can use X# in Notebooks.
We will see how X# Notebooks are a great tool to learn and practice various libraries, compare results in different .Net languages.
Nikos Kokkalis  
Consuming AI models Not another session on ChatGPT! We will instead discuss running models locally on your PC using X# (GPU-accelerated too, if you have a decent GPU).
New Language Features What's added since our previous meeting in Memmingen. We will also discuss the difficulties we are facing on keeping the compiler code updated.
Peter Monadjemi  
Getting out of technical debt How to improve code quality with NDepend.
This presentation discusses various means to improve the quality of your X# code by using the commercial tool NDepend. The main focus lies on the general term technical debt, how it can be measured, what it’s made up and how it gives developers and project managers an orientation about the overall quality of the source code. The presentation will show several examples of how to use the NDepend API with X#.
Another topic will be general metrics like Cyclomatic Complexity (CC), naming conventions (of course) and how to use quality gates as a part of an CI pipeline.
Peter Monadjemi is an experienced developer who uses X# for many years within a large project. He rediscovered NDepend recently after forgetting about it for several years, and was amazed about an A-rating in the NDepend dashboard for the source code of the large project he is working on with other developers for many years.
PowerShell as the X# developers best friend PowerShell is a command line tool from Microsoft that is based on the same .Net runtime that X# uses. Both share the same runtime and the same type system.
The interactivity of the PowerShell Command line makes it a very attractive sidekick to Visual Studio or XIDE.
The presentation will start with a short overview about how the PowerShell type system differs from the regular .Net type system. The next topic will be about customizing PowerShell as part of Terminal to make it more appealing. The presentation will show many examples about how to search the X# runtime for certain types or methods, do ad hoc database queries against any kind of DBMS, update the database schema or use a PowerShell script as a “poor man's static code analyzer” for an X# project with a nice dashboard.
Chris Pyrgas  
Using X# to the max How to use powerful language features that are little known or not widely used to write better/more readable/more robust code and boost productivity and performance. Topics will include local functions, tuples, lambda expressions, code patterns, language extensions, special keywords and statements and many more. Can be divided into part I & II (standard and more advanced topics).
XIDE to the max XIDE contains a lot of undocumented or not widely used features, that very few (if any at all) developers know about. We will discuss code, project and configuration templates, visual designer inheritance, the plugin system and many more smaller or bigger features for enhancing productivity.
Wolfgang Riedmann  
Accessing a web service from plain X# More and more customers are using web applications like Wrike or Hubspot, and are requiring to exchange data between them. This session will show you how to build a dataexchange layer both synchronous and asynchronous. As a goodie, the interface also works for plain VO applications using X# build COM libraries.
DBF to SQL  Slowly DBFs will be replaced by SQL databases, because users are requesting more and more filters on large tables and are not more accepting the time delays required to filter DBFs. This session will show you on an example application how to move an existing application partially to a PostgreSQL database to make your migration affordable using a SQL based Dataserver.
Holger Steinmar  
Using Build Automation for building and testing In this session, we will demonstrate how to automate the build process, including running tests and deploying the result of the build process.
We will set up a sample project and go through all the steps from build to deploy.
We will use the tool Nuke (https://nuke.build/).
Robert van der Hulst  
Error Handling & Logging The .Net error handling differs a lot from the error handling inside languages such as Visual Objects and FoxPro. This session will discuss the differences and will show you how you can create applications that produce error logs that you can use to debug potential errors in your app. We will also look at logging solutions
SDK projects, Multi Targeting and Creating Nuget packages Building apps for recent versions of .Net with Visual Studio requires a different project file format. In this session, we will take a look at this format and also show how to create projects that produce output for multiple targets (e.g. .Net Framework and .Net 8 or 9) and how to bundle these in a single (nuget) package. The MsBuild system will then select the appropriate DLLs for the target framework that you are using.
Github Copilot This (freak night) session covers the new Github Copilot, that is supposed to help you in writing and documenting code better. Is it any good and does it work with X#?

Opening Session & Closing Session

 
   

Various customers

 

Application Show

During this session various customers will demonstrate the programs that they created with X# and explain some of the decisions that they have made during the migration process.
Alessandro Vacchiano (Computers Centre, Italy) and Joshua Wiser (Azyra, Ireland) will show their apps.