Discussing, Learning, and Using Delphi and related technologies to create Great Applications!
procedure Meeting;
const
  MeetingTitle = 'MARCH MEETING CANCELED!';
  MeetingMonth = 2020.03 ;
  { tags: #2020 }
begin
  WriteLn('''
With the rapid spread of Corona virus, we will support the advice to limit interactions with others until the threat has abated. Furthermore, since all restaurants are closed for in-house dining, All future meetings are suspended until further notice.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Sysmatics App Demo';
  MeetingMonth = 2020.02 ;
  { tags: #2020 }
begin
  WriteLn('''
Demo of applications by Sysmatics and how minimizing apps on the desktop do not work the same in Windows 10 as previous versions. PRESENTER Gene Juhos has been working with Delphi since version 3. Before that he used the Pascal language on the Apple Lisa. He started his programming career writing code for an IBM 3741. He’s written useful code in COBOL, FORTRAN, C, C++, Assembler, and CADOL. Currently, his business, Sysmatics, converts proprietary character based business applications to Delphi for several customers.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Predictions for Next Year';
  MeetingMonth = 2019.11 ;
  { tags: #2019 }
begin
  WriteLn('''
The November meeting is our last meeting of each calendar year. This year, we’ll get out our crystal ball and peer into the future of what 2020 will bring to the tech industry. Come add your thoughts to the mix! DISCLAIMER: The discussions will be purely speculation and the opinions of those present!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2019.10 ;
  { tags: #2019 }
begin
  WriteLn('''
No specific topic tonight–just Delphi developers getting together and sharing whatever non-political topics come to mind!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Web Frameworks';
  MeetingMonth = 2019.09 ;
  { tags: #Glenn Dufke #web #2019 }
begin
  WriteLn('''
In July, we had a Delphi MVP briefly cover a variety of topics, one of them was MARS Curiosity, the open source REST server framework written by Andrea Magni. This month, Glenn Dufke is back and will dive more deeply into that framework. Further back this year, we explored another open source web server project, DMVC Framework, written by Daniele Teti, and will bring this out as time allows to compare the two.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Embarcadero MVP Visit';
  MeetingMonth = 2019.07 ;
  { tags: #2019 }
begin
  WriteLn('''
Glenn Dufke, an Embarcadero MVP, will be visiting Portland in July and would like to meet fellow Delphi developers around the world. While here, he offered to stop by our group and talk to us on the following topics: Briefly go through how to set up RAD Studio to build and compile for Android Things and what you can do with it; Current status of Delphi, the direction it’s currently taking and what’s to come–most importantly why we should keep using the product and the cool new solutions we can build (it’s not just for maintaining existing customer solutions); Finally we will look at how you can couple Delphi as a back-end with multiple front-ends for different platforms and still access your data; we will also look at how you can build a REST Server and Client with MARS Curiosity – the open source REST server framework written by Andrea Magni.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Arduino Projects';
  MeetingMonth = 2019.06 ;
  { tags: #Arduino #Gene Juhos #2019 }
begin
  WriteLn('''
We have something a little different this month. Gene Juhos will bring a couple of Arduino projects he’s been working on: Pill dispenser for the Age(d)s Socket head screw safety wire hole deburring machine. We’ll probably have some left-over time, so if you have any hardware projects to add to the discussion, feel free to bring them and share with everyone. PRESENTER Gene Juhos has been working with Delphi since version 3.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2019.05 ;
  { tags: #2019 }
begin
  WriteLn('''
There is no specific talk or presentation planned tonight. We’ll just chat as friends and colleagues about whatever topics arise.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'SMS and Missed Meeting Makeup';
  MeetingMonth = 2019.04 ;
  { tags: #Homer Jones #2019 }
begin
  WriteLn('''
We’ll have a short presentation of how to send SMS messages from a Delphi app. There isn’t much to it but might be interesting for some. We’ll fill the rest of the time by covering any previous topics that you’d like. If you’ve missed a recent ODUG meeting and would like to ask questions or see demos of things that have been missed, come to this meeting and we’ll dig stuff out of archives and get you caught up.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Client/Server Mobile App - Part 2';
  MeetingMonth = 2019.03 ;
  { tags: #2019 }
begin
  WriteLn('''
This month, we’ll continue exploring the client/server application we looked at last month, but we’ll concentrate on the client end. The end result is an Android app that communicates by sending JSON data via REST protocols to the Windows server. We’ll use Delphi 10.2 Tokyo and the Firemonkey framework utilizing both a Windows client for quick testing and then deploying to an Android phone. The app will demonstrate login/logout, multiple pages with navigation, using a barcode scanner, and capturing a signature.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Client/Server Mobile App - Part 1';
  MeetingMonth = 2019.02 ;
  { tags: #2019 }
begin
  WriteLn('''
We’re going to start off 2019 with a series of meetings that show you how to build a mobile application that talks to a server back-end. David will show a project built with Delphi 10.2 Tokyo that has two parts: 1) a Windows server console application that talks to an InterBase database and provides an API to which a client application connects; and 2) an Android app that connects to the server and communicates JSON data via REST protocols.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi Chat';
  MeetingMonth = 2019.01 ;
  { tags: #2019 }
begin
  WriteLn('''
For anyone who wants to just chat about Delphi or related technical (or non-technical) topics, David Cornelius will be at the restaurant tonight at the regular time.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'End-of-Year Technology Chat';
  MeetingMonth = 2018.12 ;
  { tags: #2018 }
begin
  WriteLn('''
Since our regularly scheduled meeting for November fell on the day before Thanksgiving and NO ONE would be there, we decided to move the meeting date forward a couple of weeks. We don’t normally meet in December, but we’ll make an exception because it’s early enough in the month that it shouldn’t conflict with any holiday/family plans. We won’t have a specific presenter but could start off the discussion with how the year went for everyone, touch on some of the interesting news highlights in the tech industry, and go from there.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Remote Access Through a Browser';
  MeetingMonth = 2018.10 ;
  { tags: #2018 }
begin
  WriteLn('''
This is Part II to August’s topic in a way because we will be looking at a different way to get your legacy applications to run through a browser. However, this time we’ll be looking at a different product from the same company that provided Thinfinity VirtualUI. There are cases where that scenario doesn’t quite cut it. Cybele Software provides another solution, Thinfinity Remote Desktop Server. There are many Remote Desktop clients and other ways to access remote desktops through a browser.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Run your Delphi VCL Applications through a Browser!';
  MeetingMonth = 2018.08 ;
  { tags: #2018 }
begin
  WriteLn('''
This month we will show how, by adding a simple library to your old Delphi code, your Windows VCL application can run through a web browser on any device that supports HTML5. No need to use WebBroker or convert it to IntraWeb or Firemonkey, just simply open up your project, add a unit, recompile, and it now is able to paint on an HTML5 Canvas–provided the Thinfinity VirtualUI server is running.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Chocolatey for Delphi';
  MeetingMonth = 2018.06 ;
  { tags: #automation #2018 }
begin
  WriteLn('''
If you’ve ever used Linux, you may be familiar with software package managers such as RPM or APT to easily install and update software along with their dependencies. A few years ago, someone decided that Windows should be able to enjoy this same ease of maintaining software packages and started Chocolatey, a package manager for Windows using PowerShell scripts and the NuGet infrastructure. Typically, when installing software, you need to look for them on the web, select a mirror to download from, go to your downloads folder, launch the installer, acknowledge licenses, then repeating for each program.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Dependencies';
  MeetingMonth = 2018.05 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
We’ve talked a lot about the SOLID principles of software development over the last couple of months. The last letter, D, stands for Dependency Inversion. We’ll discuss this with examples and talk about the Spring library and how its Dependency Injection plays into this–if you do it right! PRESENTER Ron Grove will again lead the discussion, based in large part on his deep knowledge of the subject having read the book the SOLID principles were based on before the acronym was coined.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Be a SOLID Programmer';
  MeetingMonth = 2018.04 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
This is a continuation of the discussion on SOLID programming principles we started last month. We’ll finish up our coverage of Single Responsibility and Open/Closed principles, then continue on with aspects of the other three: Liskov Substitution - objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program, Interface Segregation - many client-specific interfaces are better than one general-purpose interface, and Dependency Inversion - one should depend upon abstractions, not concretions.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'S is for SOLID';
  MeetingMonth = 2018.03 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
It’s time to get into some coding practices. This is the first in a series exploring the SOLID principles of software development. This month, we’ll concentrate on the Single Responsibility Principle. As time allows we’ll start looking at the “O” which stands for the Open/Closed principle. Many of us have probably used these principles even though we may not have had fancy terms like this in mind at the time. Hopefully we can help one another think about how we can make use of common sense principles like these in our own work.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2018.02 ;
  { tags: #2018 }
begin
  WriteLn('''
Due to the weather, we’ll postpone the start of our SOLID discussion until March. For those who would like to join tonight anyway, we’ll have a small gathering at the usual space and time and let the conversation lead us where it may!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi 10.2.2 and Group Planning';
  MeetingMonth = 2018.01 ;
  { tags: #2018 }
begin
  WriteLn('''
For the discussion tonight, we’ll briefly touch on the latest update to Delphi which was 10.2.2. Since it’s the first meeting of 2018 we will also focus on what we’re all doing with Delphi (if anything) and what kinds of discussions would be best to focus on this year. I don’t want to spend too much time talking about features that are hardly even marginally useful to any of us and focus on what is useful.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;